此代码是否检查endianess?

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

void checkEndianess() { int i = 1; char c = (char)i; if(c) cout<<"Little Endian"<<endl; else cout<<"Big Endian"<<endl; } 

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

你可能正在寻找这个:

 int i = 1; char c = *(char *) &i; if (c) { cout << "Little endian" << endl; } else { cout << "Big endian" << endl; } 

(可以说,当然;-P)更清晰地获取相同内存的不同解释的方法是使用联合:

 #include 

 int main()
 {
    联盟
     {
         int i;
         char c;
     } X;
     xi = 1;
     std :: cout <<(int)xc <<'\ n';
 }

BTW /有更多的字节序变化而不仅仅是大而小。 🙂

试试这个:

 int i = 1; if (*(char *)&i) little endian else big endian