大端字节序与小端字节序

创作人 Leo


编辑时间 Wed Aug 26,2020 at 17:49


大端字节序与小端字节序

高低位:

例:

0x1234 占2字节

则 0x12 是高位,0x34是低位

也就是以我们的角度 左侧高位,右侧低位

大小端:

数据保存在内存中需要按照一定的顺序排列,

数据的低位字节保存在内存低地址端,称为小端字节序,Little-Endian,

数据的高位字节保存在内存低地址端,称为大端字节序,Big-Endian。

如下图,数据从栈顶入栈:

小端字节序是低位字节最后入栈,保存在内存的低地址端;

大端字节序是高位字节最后入栈,保存在内存的低地址端;

大小端字节序

例:大小端判断

int bigEndTest(){
    union{
        char a[2] ;
        unsigned short i ;
    }tester ;
 
    tester.i = 1 ;
 
    printf("%d\n", tester.a[0]);   // 低地址
    printf("%d\n", tester.a[1]);   // 高地址
 
    // 数据                  高位字节            低位字节
    // unsigned short 1       0000 0000 0000 0001
    // 也就是以我们的角度 左侧高位,右侧低位
 
    // 内存              低地址             高地址
    // 结果内存中字节序为    0000 0001 0000 0000     小端字节序   数据低位字节保存在内存的低地址端,称为小端字节序    Little-Endian
    // 如果内存中字节序为    0000 0000 0000 0001     大端字节序   数据高位字节保存在内存的低地址段,称为大端字节序    Big-Endian
 
    // 该数据输出位 0x01 0x00 明显是小端字节序
 
    return 0 ;
}

总结: 如果输出的顺序非正常排列的顺序,则为小端字节序

如:

整数 1 :0000 0000 0000 0001

大端 :0000 0000 0000 0001

小端 :0000 0001 0000 0000


阅读:1019
搜索
  • Linux 高性能网络编程库 Libevent 简介和示例 2557
  • Mac系统编译PHP7【20190929更新】 2290
  • zksync 和 layer2 2191
  • web rtc 学习笔记(一) 2172
  • Hadoop 高可用集群搭建 (Hadoop HA) 2160
  • Hadoop Map Reduce 案例:好友推荐 2104
  • react 学习笔记(一) 2065
  • Linux 常用命令 2056
  • 小白鼠问题 2040
  • 安徽黄山游 2038
简介
不定期分享软件开发经验,生活经验