ichiba.ch Download the KAYWA Reader!
En | De | Fr

Feed2Mobile

Le Funes - Endianess: Big-Endian y Little-Endian


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.

Más Info

Note: this is how this feed will look on your mobile device.

Get mobile!

This QR Code will let any user whose mobile phone is equipped with a QR Code Reader to easily reach and bookmark the mobile version of «Le Funes»

To add this QR Code to your Blog or Website, simply copy-paste the following Javascript blurb into your Blog template.

Feed2Mobile v1.0-BETA3 CONTACT US: KAYWA // TECHNOPARKSTRASSE 1 // 8005 ZUERICH // SWITZERLAND // info@kaywa.com