Como converter uma matriz de bytes em um int (Guia de Programação em C#)
Este exemplo mostra como usar a classe BitConverter para converter uma matriz de bytes em um int e de volta em uma matriz de bytes. Talvez você precise converter bytes em um tipo de dados interno depois de ler bytes da rede, por exemplo. Além do método ToInt32(Byte[], Int32) no exemplo, a tabela a seguir lista métodos na classe BitConverter que convertem bytes (de uma matriz de bytes) em outros tipos internos.
Tipo retornado | 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) |
Exemplos
Este exemplo inicializa uma matriz de bytes, reverte a matriz se a arquitetura do computador for little-endian (ou seja, se o byte menos significativo for armazenado primeiro) e, em seguida, chama o método ToInt32(Byte[], Int32) para converter quatro bytes da matriz em um int
. O segundo argumento para ToInt32(Byte[], Int32) especifica o índice de início da matriz de bytes.
Observação
A saída pode ser diferente dependendo da extremidade (ordenação dos bytes) da arquitetura do computador.
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
Neste exemplo, o método GetBytes(Int32) da classe BitConverter é chamado para converter um int
em uma matriz de bytes.
Observação
A saída pode ser diferente dependendo da extremidade (ordenação dos bytes) da arquitetura do computador.
byte[] bytes = BitConverter.GetBytes(201805978);
Console.WriteLine("byte array: " + BitConverter.ToString(bytes));
// Output: byte array: 9A-50-07-0C