Lire/écrire un entier 24 bits :-)

Résolu
Signaler
Messages postés
167
Date d'inscription
dimanche 6 février 2005
Statut
Membre
Dernière intervention
13 avril 2007
-
Messages postés
167
Date d'inscription
dimanche 6 février 2005
Statut
Membre
Dernière intervention
13 avril 2007
-
Bonjour,

Je dois lire/écrire deux valeurs dans un fichier :
- un entier unsigned codé sur 24 bits
- un byte
=> le tout fait donc 32 bits

On m'a conseillé de lire le tout dans un entier unsigned de 32 bits ce que je fais.

Pour stocker le byte ça va, je fais : byte monByte = (byte)(monUInt32 >> 24);

Mais je n'arrive pas trouver la formule pour stocker l'UInt24

4 réponses

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
Salut, il n'y a pas de type de 24 bits, il faut utiliser le type UInt32 ou 3 Bytes:

uint value = 0x11223344U; // Valeur de départ.
byte b = ( byte )( value >> 24 ); // Les 8 derniers bits.
uint i = value & 0x00FFFFFFU; // Les 24 premiers bits


// Pour verifierMessageBox.Show( "b " + b.ToString( "X" ) + "\r\ni " + i.ToString( "X" ) );
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
Une constante entière ou "littérale" c-à-d un nombre comme 0x0000FFFF ou 500 par exemple est codé en Int32 ou en Int64 si ca valeur dépasse la capacité d'un Int32 avec le suffix "U" ou "u" elle est codée en Uint32.

Les réels étant codés en double on utilises souvent le suffix "f" ou "F", ex :

float x = 10.0f; //  sans le "f" 10.0 est un double avant d'être assigné en float dans x.
Messages postés
167
Date d'inscription
dimanche 6 février 2005
Statut
Membre
Dernière intervention
13 avril 2007

Merci Lutinore, c'est super ! (et ça fonctionne en plus lol)

Une chose m'interpelle : à quoi servent les U ?

uint value = 0x11223344U; // Valeur de départ.
<gras>uint i = value & 0x00FFFFFFU</gras><gras>;</gras> // Les 24 premiers bits
Messages postés
167
Date d'inscription
dimanche 6 février 2005
Statut
Membre
Dernière intervention
13 avril 2007

Merci !