此代码是否检查endianess?

mou*_*sey 3 c c++ endianness

我在小端看到,LSB处于起始地址,在Big endian中,MSB处于起始地址.所以我写了这样的代码.如果不是为什么?

void checkEndianess()
{

int i = 1;
char c = (char)i;

if(c)
        cout<<"Little Endian"<<endl;
else
    cout<<"Big Endian"<<endl;


}
Run Code Online (Sandbox Code Playgroud)

Ebo*_*ike 11

不,您正在使用int并将其转换为char,这是一个高级概念(内部最有可能在寄存器中完成).这与字节序无关,字节序主要与记忆有关.

你可能正在寻找这个:

int i = 1;
char c = *(char *) &i;

if (c) {
   cout << "Little endian" << endl;
} else {
   cout << "Big endian" << endl;
}
Run Code Online (Sandbox Code Playgroud)