Guide pratique pour convertir un tableau d’octets en valeur int (Guide de programmation C#)
Cet exemple montre comment utiliser la classe BitConverter pour convertir un tableau d’octets en valeur int, puis la reconvertir en tableau d’octets. Vous devrez peut-être convertir des octets en un type de données intégré après avoir lu les octets sur le réseau. Outre la méthode ToInt32(Byte[], Int32) de l’exemple, le tableau suivant répertorie les méthodes dans la classe BitConverter qui convertissent des octets (d’un tableau d’octets) en d’autres types intégrés.
Type retourné | Méthode |
---|---|
bool |
ToBoolean(Byte[], Int32) |
char |
ToChar(Byte[], Int32) |
double |
ToDouble(Byte[], Int32) |
short |
ToInt16(Byte[], Int32) |
int |
ToInt32(Byte[], Int32) |
long |
ToInt64(Byte[], Int32) |
float |
ToSingle(Byte[], Int32) |
ushort |
ToUInt16(Byte[], Int32) |
uint |
ToUInt32(Byte[], Int32) |
ulong |
ToUInt64(Byte[], Int32) |
Exemples
Cet exemple initialise un tableau d’octets, inverse le tableau si l’architecture de l’ordinateur est little-endian (autrement dit, l’octet le moins significatif est stocké en premier), puis appelle la méthode ToInt32(Byte[], Int32) pour convertir quatre octets du tableau en valeur int
. Le deuxième argument de ToInt32(Byte[], Int32) spécifie l’index de départ du tableau d’octets.
Notes
La sortie peut varier en fonction du caractère endian de l’architecture de votre ordinateur.
byte[] bytes = [0, 0, 0, 25];
// If the system architecture is little-endian (that is, little end first),
// reverse the byte array.
if (BitConverter.IsLittleEndian)
Array.Reverse(bytes);
int i = BitConverter.ToInt32(bytes, 0);
Console.WriteLine("int: {0}", i);
// Output: int: 25
Dans cet exemple, la méthode GetBytes(Int32) de la classe BitConverter est appelée pour convertir une valeur int
en tableau d’octets.
Notes
La sortie peut varier en fonction du caractère endian de l’architecture de votre ordinateur.
byte[] bytes = BitConverter.GetBytes(201805978);
Console.WriteLine("byte array: " + BitConverter.ToString(bytes));
// Output: byte array: 9A-50-07-0C