Endianness
Endianness é um termo da ciência da computação que descreve como os dados são armazenados. Especificamente, ele define qual extremidade de um tipo de dado de vários bytes contém os valores mais significativos. Os dois tipos de endianness são big-endian e little-endian.
Big-Endian
Big-endian é a maneira mais comum de armazenar dados binários. Ele coloca primeiro o valor mais significativo (ou maior), seguido pelos valores menos significativos. Por exemplo, a representação big-endian do inteiro 123 coloca primeiro o valor das centenas (1), seguido pelo valor das dezenas (2) e depois pelo valor das unidades (3), ou [123].
Little-Endian
Little-endian armazena primeiro o valor menos significativo, seguido por valores cada vez mais significativos. Por exemplo, o número 123 na notação little-endian é [321]. A string de texto "ABC" é representada como [CBA].
Conversão de endianness
Na maioria dos casos, os desenvolvedores não precisam especificar o endianness, pois o compilador gera o tipo correto de dados para uma plataforma específica. No entanto, um programa pode precisar processar dados de entrada externos, como um formato de arquivo que armazena dados com um endianness diferente. Nesse caso, os dados precisam ser convertidos de little-endian para big-endian ou vice-versa.
Converter o endianness não é tão simples quanto inverter os dados. Os bytes, e não os bits, precisam ser invertidos. Em outras palavras, cada byte (ou bloco de oito bits) deve permanecer igual, mas a ordem dos bytes é alterada. Isso pode ser explicado usando a representação hexadecimal ou binária dos dados.
Por exemplo, o inteiro 41.394 é representado na notação big-endian como:
hexadecimal: A1B2
binário: 1010000110110010
Converter esses dados para little-endian não inverte os dados, mas sim os bytes individuais dentro dos dados. O hexadecimal usa dois dígitos para representar cada byte – [A1][B2], enquanto o binário usa oito dígitos – [10100001][10110010].
Portanto, a representação little-endian de 41.394 é:
hexadecimal: B2A1
binário: 1011001010100001
NOTE: Alguns processadores podem buscar dados como big-endian ou little-endian sem que seja necessária conversão. Isso é chamado de acesso a dados bi-endian.
Teste seus conhecimentos