此代码是否检查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)更清晰地获取相同内存的不同解释的方法是使用联合:
#includeint 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