Bigendian顺序和读出来相同,littleendian和读出来顺序相反。ios
对于一个结构体,使用bigendian和littleendian,内部元素的顺序变化,取决于具体的元素类型。c++
反序的原则:spa
int main(int argc, char **argv) { union { short s; char c[sizeof(short)]; } un;//联合结构体 un.s = 0x0102; //注意是十六进制 if (sizeof(short) == 2) { if (un.c[0] == 1 && un.c[1] == 2) { printf("big-endian\n");//地址从低到高读出的数字和实际数字相同 } else if (un.c[0] == 2 && un.c[1] == 1) { printf("little-endian\n");//地址从低到高读出的数字和实际数字相反 } else { printf("unknown\n"); } } else { printf("sizeof(short) = %d\n", sizeof(short)); } exit(0); }
结果:3d
#include <iostream> //#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <bitset> using namespace std; int main(int argc, char const *argv[]) { string s = "11100100"; bitset<8> bit8(s); for (int i = 0; i < s.length(); i++) { cout << bit8[i] << " "; } return 0; }
结果:code
事实证实,小端机器在对结构体内元素取反的时候——大元素间和字节级小元素组间及相互之间顺序固定,大元素内部的字节级小元素内部的具体bit位,会随着小端的方式按bit位所有取反。只是读取的时候,两种机器的读取顺序各自按照本身的方式,因此读出来的,每个具体小元素,和大元素的每个字节元素,对应另一种机器的值是相同的,但相互的顺序是反的。blog