字节序这个东西经常让我犯迷糊,好几次以为自己懂了结果一写代码又是不对,写篇文章加深下印象。
字节序是字节之间的序列,有大端法和小端法两种,要存储整数 0x12345678,大端法和小端法在内存中布局分别如下:

小端法通常用于计算机内部数据处理,而各种网络协议、文件系统等常用大端法。
特别注意的是 C 语言中数组的初始化是从第 0 个元素开始,然后是第 1 个元素,以此类推,要注意书写顺序。
unsigned int i = 0x12345678; // 小端法等价于 unsigned char c[] = { 0x78,0x56,0x34,0x12 }; // 结果测试 if (i == *((unsigned int*)c)) printf("equal\n"); // equal
字节序检查:
unsigned int i = 0x12345678; unsigned char *c = (unsigned char*)(&i); c[0] == 0x78 ? printf("小端法") : printf("大端法"); printf("\n");
发表回复