Formato endian

El formato endian es un atributo de los datos que describe el orden de los bytes. Cuando las aplicaciones intercambian datos, deben conocer el convenio de clasificación para los datos de varios bytes. En caso contrario, los datos podrían malinterpretarse.

Los datos pueden tener los formatos de orden de bytes siguientes:

Big endian
Formato en el que el byte más significativo se almacena en primer lugar. Los demás bytes le siguen en orden de significado descendente. Por ejemplo, para una palabra de cuatro bytes, el orden de bytes es 0, 1, 2, 3. Para una palabra de dos bytes, es 0, 1.

El formato big endian es utilizado por pSeries, IBM® Z, iSeries, Sun y HP.

Little endian
Formato en el que el byte menos significativo se almacena en primer lugar. Los demás bytes le siguen en orden de significado ascendente. Por ejemplo, para una palabra de cuatro bytes, el orden de bytes es 3, 2, 1, 0. Para una palabra de dos bytes, es 1, 0.

El formato little endian se utiliza en las máquinas basadas en Intel, por ejemplo, xSeries.

El formato endian afecta solamente a los datos de varios bytes. En un único byte, los bits siempre se ordenan del mismo modo. El orden de los bits dentro de un byte es siempre 7, 6, 5, 4, 3, 2, 1, 0.

Los datos UTF-8 no se ven afectados por el formato endian, aunque los datos se almacenen en más de 1 byte. Los datos UTF-16 y UTF-32 sí se ven afectados por el formato endian. Por ejemplo, el carácter 'A' está codificado para UTF-16 y UTF-32, tal como se muestra en la tabla siguiente:
Tabla 1. Ejemplo de codificación para el carácter 'A'
  UTF-16 UTF-321
Big endian X'0041' X'00000041'
Little endian X'4100' X'41000000'
Nota:
  1. Db2 for z/OS no almacena datos en UTF-32

El formato endian se convierte en un problema potencial cuando se intercambian datos entre sistemas y aplicaciones que utilizan formatos endian diferentes y los datos no se convierten correctamente. Tenga en cuenta el formato endian de los datos que su sistema o su aplicación manipula. Podrían observarse problemas con el formato endian al ver los valores de codificación de los caracteres en los rastreos. Para saber si este problema se da, observe si los valores de los bytes numéricos se han intercambiado. Por ejemplo, se espera X'0041' pero aparece X'4100'.

Ejemplo

Supongamos que está cargando datos en formato little endian UTF-16 (CCSID 1202) desde una aplicación .NET. Db2 for z/OS no da soporte al almacenamiento de datos en el CCSID 1202. Sin embargo, Db2 da soporte a conversiones hacia y desde el CCSID 1202. Por lo tanto, Db2 convierte los datos y los almacena en formato big endian UTF-16 (CCSID 1200). En este caso, debe tener en cuenta que el formato de los datos habrá cambiado.