significativo mas little endian conversion big and unicode utf-16 endianness

unicode - mas - little endian bits



Diferencia entre Big Endian y el pequeño pedido de Endian Byte (6)

Big-endian y little-endian son términos que describen el orden en que se almacena una secuencia de bytes en la memoria de la computadora.

1. Big-endian es un orden en el que el "gran final" (el valor más significativo de la secuencia) se almacena primero (en la dirección de almacenamiento más baja).

2. Little-endian es un orden en el cual el "pequeño final" (valor menos significativo en la secuencia) se almacena primero.

Por ejemplo

En una computadora de big-endian, los dos bytes requeridos para el número hexadecimal 4F52 se almacenarían como 4F52 en almacenamiento (if 4F is stored at storage address 1000, for example, 52 will be at address 1001).

En un sistema little-endian, se almacenaría como 524F (52 at address 1000, 4F at 1001).

¿Cuál es la diferencia entre Big Endian y Little Endian Byte?

Ambos parecen estar relacionados con Unicode y UTF16. ¿Dónde exactamente usamos esto?


La respuesta de Fernando (y otras) son correctas, pero incompletas.

Big Endian (BE) / Little Endian (LE) no tienen nada que ver con UTF-16 o UTF-32. Existían mucho antes de Unicode, y afectan cómo los bytes de números se almacenan en la memoria de la computadora. Dependen del procesador.

Si tiene un número con el valor 0x12345678 entonces en la memoria se representará como 12 34 56 78 (BE) o 78 56 34 12 (LE).

UTF-16 y UTF-32 pasan a estar representados en 2 o 4 bytes, por lo que el orden de los bytes respeta el orden que sigue cualquier número en esa plataforma.


UTF-16 codifica Unicode en valores de 16 bits. La mayoría de los sistemas de archivos modernos operan en bytes de 8 bits. Por lo tanto, para guardar un archivo codificado en UTF-16 en un disco, por ejemplo, debe decidir qué parte del valor de 16 bits va en el primer byte y cuál va en el segundo byte.

Wikipedia tiene una explicación más completa.


en.wikipedia.org/wiki/Endianness necesario especificar el en.wikipedia.org/wiki/Endianness (grande o pequeño) para la codificación Unicode / UTF-16 porque para los códigos de caracteres que usan más de un byte, existe la opción de leer / escribir el byte más significativo primero o último. Unicode / UTF-16, ya que son codificaciones de longitud variable (es decir, cada char se puede representar por uno o varios bytes) requieren que esto se especifique. (Sin embargo, tenga en cuenta que las "palabras" UTF-8 siempre tienen 8 bits / un byte de longitud [aunque los caracteres pueden ser múltiples puntos], por lo tanto no hay problema con endianness.) Si el codificador de una secuencia de bytes representa texto Unicode y el decodificador no está de acuerdo con qué convención se está utilizando, se puede interpretar el código de carácter incorrecto. Por esta razón, ya sea la convención de endianness se conoce de antemano o más comúnmente una marca de orden de bytes generalmente se especifica al comienzo de cualquier archivo de texto Unicode / stream para indicar si se está usando una orden de endian grande o pequeña.


little-endian: adj.

Describe una arquitectura de computadora en la que, dentro de una palabra dada de 16 o 32 bits, los bytes en las direcciones inferiores tienen un significado menor (la palabra se almacena ''poco-final-primero''). Las familias de computadoras PDP-11 y VAX, los microprocesadores Intel y una gran cantidad de hardware de comunicaciones y redes son poco endian. El término a veces se usa para describir el orden de unidades que no sean bytes; la mayoría de las veces, bits dentro de un byte.

big-endian: adj.

[común; De los viajes de Gulliver de Swift a través del famoso periódico Sobre las guerras santas y un mensaje de paz por Danny Cohen, USC / ISI IEN 137, del 1 de abril de 1980]

Describe una arquitectura de computadora en la que, dentro de una representación numérica de varios bytes dada, el byte más significativo tiene la dirección más baja (la palabra se almacena ''big-end-first''). La mayoría de los procesadores, incluida la familia IBM 370, el PDP-10, las familias de microprocesadores de Motorola y la mayoría de los diversos diseños de RISC son de gran tamaño. La orden de bytes Big-Endian también se denomina a veces orden de red.

--- del archivo Jargon: http://catb.org/~esr/jargon/html/index.html


Big-Endian (BE) / Little-Endian (LE) son dos formas de organizar palabras de varios bytes. Por ejemplo, cuando se usan dos bytes para representar un carácter en UTF-16, hay dos formas de representar el carácter 0x1234 como una cadena de bytes (0x00-0xFF):

Byte Index: 0 1 --------------------- Big-Endian: 12 34 Little-Endian: 34 12

Para decidir si un texto usa UTF-16BE o UTF-16LE, la especificación recomienda anteponer una Marca de Orden de Byte (BOM) a la cadena, que representa el carácter U + FEFF. Entonces, si los primeros dos bytes de un archivo de texto codificado en UTF-16 son FE , FF , la codificación es UTF-16BE. Para FF , FE , es UTF-16LE.

Un ejemplo visual: la palabra "Ejemplo" en diferentes codificaciones (UTF-16 con BOM):

Byte Index: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ------------------------------------------------------------ ASCII: 45 78 61 6d 70 6c 65 UTF-16BE: FE FF 00 45 00 78 00 61 00 6d 00 70 00 6c 00 65 UTF-16LE: FF FE 45 00 78 00 61 00 6d 00 70 00 6c 00 65 00

Para obtener más información, lea la página de Wikipedia de en.wikipedia.org/wiki/Endianness y / o UTF-16 .