字节序

创建

字节序这个东西经常让我犯迷糊,好几次以为自己懂了结果一写代码又是不对,写篇文章加深下印象。

字节序是字节之间的序列,有大端法和小端法两种,要存储整数 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");

评论

《“字节序”》 有 1 条评论

  1. 老实人 的头像
    老实人

    楼主很牛

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

苏ICP备2023046324号-1