概述:在实际开发过程中,只要是和硬件打交道,就会经常碰到小端序、大端序的概念,故作此纪录

首先以上几个关键字都是计算机存储和数据表示中的重要概念,务必要掌握

在计算机系统中,一个多字节数据(如:uint16、uint32、uint64等)通常被划分为多个字节。 

1、低位字节与高位字节

  • 低位字节(Least Significant Byte, LSB):是指数值中权重最低的字节,即对数值影响最小的部分。
  • 高位字节(Most Significant Byte, MSB):是数值中权重最高的字节,对数值影响最大。

举例:对于16位整数 0x2357而言,在硬件中会被拆分为0x23和0x57两个部分,其中0x57权重最低,为低位字节;而0x23权重最高,为高位字节

2、多字节数据在内存中的存储方式(小端序、大端序)

  • 小端序(Little-Endian):低位字节存储在低地址端,高位字节存储在高地址端。
  • 大端序(Big-Endian):高位字节存储在低地址端,低位字节存储在高地址端。

举例:对于16位整数 0x2357而言,若按小端序进行排列,那么在内存中应为57 23;若按大端序进行排列,那么在内存中应为23 57。

例:uint32_t value = 0x12345678;

// 小端序
内存地址:  0x1000  0x1001  0x1002  0x1003
存储内容:    0x78    0x56    0x34    0x12
           ↑低位    ↑       ↑      ↑高位

// 大端序
内存地址:  0x1000  0x1001  0x1002  0x1003
存储内容:    0x12    0x34    0x56    0x78
           ↑高位    ↑       ↑      ↑低位

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐