[C++] Big endian y small endian y método de juicio

endiano

Los diferentes microprocesadores usan endianness diferente.
La dirección de memoria baja almacena el byte bajo, y la dirección de memoria alta almacena el byte alto. Esto se llama little endian,
y viceversa se llama big endian.

El orden de bytes adoptado por la CPU Intel es little endian. Los mainframes como Wii, Xbox360 y PlayStation3 usan variantes de procesadores PowerPC y el orden de bytes predeterminado es big endian.
Por lo tanto, los juegos desarrollados en CPU Intel deben convertirse al orden de bytes a través de Cook antes de empaquetarse en los hosts mencionados anteriormente.

manera de juzgar

El principio básico es el truncamiento.Dado
que el byte bajo de la arquitectura little-endian se coloca en el bit bajo, intdespués de asignar un valor a un tipo, trunque su bit bajo de memoria y verifique si el resultado es el bit bajo del valor. Si el bit bajo de la memoria == el bit bajo del valor, significa que es una arquitectura little-endian.

  1. Puedes usar la unión de C para truncar
union LittleEndianTestUnion
{
    
    
    char ch;
    int i;
};

bool IsLittleEndian()
{
    
    
	LittleEndianTestUnion let;
	let.i = 0x1234;
	return let.ch == 0x34;
}
  1. Otra forma es truncar, sin usar la union para truncar directamente con el tipo
bool IsBigEndian()
{
    
    
	int i = 0x1243;
	char* ch = (char*) &i;
	return *ch == 0x12;
}

Supongo que te gusta

Origin blog.csdn.net/weixin_44559752/article/details/128347293
Recomendado
Clasificación