[C++] Big e small endian e método de julgamento

endian

Microprocessadores diferentes usam endianness diferente.
O endereço de memória baixa armazena o byte baixo e o endereço de memória alta armazena o byte alto. Isso é chamado de little endian
e vice-versa é chamado de big endian.

A ordem de bytes adotada pela CPU Intel é little endian. Mainframes como Wii, Xbox360 e PlayStation3 usam variantes de processadores PowerPC, e a ordem de byte padrão é big endian.
Portanto, os jogos desenvolvidos em CPUs Intel precisam ser convertidos em ordem de byte por meio do Cook antes de serem empacotados nos hosts mencionados acima.

forma de julgar

O princípio básico é o truncamento.Como
o byte baixo da arquitetura little-endian é colocado no bit baixo, intapós atribuir um valor a um tipo, trunque seu bit baixo de memória e verifique se o resultado é o bit baixo do valor. Se o bit baixo da memória == o bit baixo do valor, significa que é uma arquitetura little-endian.

  1. Você pode usar a união de C para truncar
union LittleEndianTestUnion
{
    
    
    char ch;
    int i;
};

bool IsLittleEndian()
{
    
    
	LittleEndianTestUnion let;
	let.i = 0x1234;
	return let.ch == 0x34;
}
  1. Outra forma é truncar, sem usar a união para truncar direto com o tipo
bool IsBigEndian()
{
    
    
	int i = 0x1243;
	char* ch = (char*) &i;
	return *ch == 0x12;
}

おすすめ

転載: blog.csdn.net/weixin_44559752/article/details/128347293