Al momento de escribir o leer un dato en un archivo desde nuestra aplicación nos encontramos con un problema: en que orden debemos almacenar los mismos?
El problema se hace más evidente al almacenar elementos de más de un byte, como números enteros, flotantes, etc. Por ejemplo, si queremos almacenar el valor hexadecimal 0×1A2B3C4D podemos rápidamente diferenciar dos órdenes:
- Del byte más al menos significativo (0×1A, 0×2C, 0×3C, 0×4D)
- Del byte menos al más significativo (0×4D, 0×3C, 0×2C, 0×1A)
A los formatos en que se almacenarán los datos se los conoce como Endianess. Siendo el formato del primer ejemplo (de + a - significativo) conocido como Big-Endian, mientras que al formato del segundo ejemplo (de - a + significativo) se lo conoce como Little-Endian.
Veamos más en detalle cada uno de estos:
Big-Endian
Este formato fue promovido entre otros por Motorola, y quiere decir “Del más grande al final”.
En el se comienza almacenando del byte más al menos significativo, exactamente igual que como solemos representar los números (por lo menos por estos lados del mundo), siendo el primer byte el que tiene más peso en la secuencia.
Ejemplo 1: Array de datos de 1 Byte cada uno
Si deseamos almacenar:
0×47, 0xEF, 0×15, 0×2A, 0×89, 0×37, 0×84, 0×33
Obtendríamos:
Ejemplo 2: Array de datos de 2 Bytes cada uno
Si deseamos almacenar:
0×47EF, 0×152A, 0×8937, 0×8433
Obtendríamos:
Ejemplo 3: Array de datos de 4 Bytes cada uno
Si deseamos almacenar:
0×47EF152A, 0×89378433
Obtendríamos:
Little-Endian
Este formato fue promovido entre otros por Intel, y quiere decir “Desde el pequeño al final”.
En el se comienza almacenando del byte menos al más significativo, siendo el ultimo byte el que tiene más peso en la secuencia.
Ejemplo 4: Array de datos de 1 Byte cada uno
Si deseamos almacenar:
0×47, 0xEF, 0×15, 0×2A, 0×89, 0×37, 0×84, 0×33
Obtendríamos:
Como podemos observar no se nota la diferencia con el big-endian en este caso.
Ejemplo 5: Array de datos de 2 Bytes cada uno
Si deseamos almacenar:
0×47EF, 0×152A, 0×8937, 0×8433
Obtendríamos:
Aquí se puede apreciar como se invierte el orden de los bytes, en comparación con el mismo dato en big-endian, en cada uno de los datos de 2 bytes.
Ejemplo 6: Array de datos de 4 Bytes cada uno
Si deseamos almacenar:
0×47EF152A, 0×89378433
Obtendríamos:
Aquí se puede apreciar como se invierte el orden de los bytes, en comparación con el mismo dato en big-endian, en cada uno de los datos de 4 bytes.
Hasta la proxima.


