小端:数据的低位 保存在 低地址
大端:
这种数据存储方法上的差别不是由操作系统造成的,而是由处理器体系结构造成的。
1 #include <stdio.h>
2
3 int main(int argc, char *argv[])
4 {
5 int a = 0x12345678;
6 char *p = (char *)&a;
7 if(*p = 0x78)
8 printf("little endian\n");
9 else
10 fprintf(stdout, "big endian\n");
11
12 return 0;
13 }
1 #include <stdio.h>
2
3 /* 数据存储形式测试函数,大端法返回0,小端法返回1 */
4 int test_endian(void)
5 {
6 int a = 0x12345678; // 测试用的数据
7 char *p= (char *)&a; // 转换为字符型数据的指针
8
9 if(*p == 0x78) // 判断最低一个字节的顺序
10 return 1;
11 return 0;
12 }
13
14 int main(int argc, char *argv[])
15 {
16 if(test_endian() == 1) // 小端法
17 {
18 /* 相应的操作 */
19 }
20 else // 大端法
21 {
22 /* 相应的操作 */
23 }
24 return 0;
25 }
验证网络字节序为big-endian大端字节序
1 #include <stdio.h>
2
3 int main(int argc, char *argv[])
4 {
5 int a = 0x12345678;
6 int b = htonl(a);
7 char *p = (char *)&b;
8 if((int)*p == 0x78)
9 printf("little-endian\n");
10 else if((int)(*p) == 0x12)
11 printf("big-endian\n");
12 else
13 printf("unkonwn\n");
14
15 return 0;
16 }