字节序,顾名思义字节的顺序,再多说两句就是大于一个字节类型的数据在内存中的存放顺序(一个字节的数据当然就无需谈顺序的问题了)。
大端法:高位保存在低地址中。
小端法:高位存放在高地址中。
程序判断大端法还是小端法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #include <iostream> using namespace std;
int main() { union { short s; char c[sizeof(short)]; } u;
u.s = 0x1234; if (sizeof(short) == 2) { if (u.c[0] == 0x12 && u.c[1] == 0x34) cout << "Big-Endian"<<endl; else if (u.c[0] == 0x34 && u.c[1] == 0x12) cout << "Little-Endian"<<endl; else cout << "not known"<<endl; } else { cout << "sizeof(short) ="<< sizeof(short) << endl; } return 0; }
|
大端和小端法对程序的影响
1 2 3 4 5 6 7 8 9 10 11 12 13
| #include <<netinet/in.h>>
uing16_t htons(uint16_t host16bitvalue);
uint32_t htonl(uint32_t host32bitvalue);
uint16_t ntohs(uint16_t net16bitvalue);
uint32_t ntohl(uint32_t net32bitvalue);
|