Procedimiento Convertir una matriz de bytes en un valor int (Guía de programación de C#)
En este ejemplo se muestra cómo usar la clase BitConverter para convertir una matriz de bytes en un valor int y de nuevo en una matriz de bytes. Por ejemplo, es posible que tenga que realizar una conversión de bytes a un tipo de datos integrado después de leer los bytes fuera de la red. Además del método ToInt32(Byte[], Int32) del ejemplo, en la tabla siguiente se muestran los métodos de la clase BitConverter que sirven para convertir bytes (de una matriz de bytes) en otros tipos integrados.
Tipo devuelto | Método |
---|---|
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) |
Ejemplos
En este ejemplo se inicializa una matriz de bytes, se invierte la matriz si la arquitectura de equipo es little-endian (es decir, en primer lugar se almacena el byte menos significativo) y, después, se llama al método ToInt32(Byte[], Int32) para convertir cuatro bytes de la matriz en int
. El segundo argumento de ToInt32(Byte[], Int32)especifica el índice de inicio de la matriz de bytes.
Nota
El resultado puede cambiar en función de los modos endian de la arquitectura del equipo.
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
En este ejemplo, el método GetBytes(Int32) de la clase BitConverter se llama para convertir int
en una matriz de bytes.
Nota
El resultado puede cambiar en función de los modos endian de la arquitectura del equipo.
byte[] bytes = BitConverter.GetBytes(201805978);
Console.WriteLine("byte array: " + BitConverter.ToString(bytes));
// Output: byte array: 9A-50-07-0C