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

Consulte también