跳转至

大端与小端(Endianness)

概念简介

在计算机系统中,端序(Endianness)描述了多字节数值在内存中的字节排列顺序:

  • 大端(Big-endian):高位字节存放在低地址;例如 0x12345678 在内存中表示为 12 34 56 78。
  • 小端(Little-endian):低位字节存放在低地址;例如 0x12345678 在内存中表示为 78 56 34 12。

现代 x86/x86_64 架构通常使用小端序,而某些网络协议(如网络字节序)以及少部分硬件架构使用大端序。

为什么端序重要?

  • 网络协议:网络字节序通常采用大端,跨主机通信需要显式转换(hton/ntoh)。
  • 文件格式:某些文件头或二进制格式指定了端序,解析时需要考虑端序。
  • 内存比较/扫描:在做内存扫描和匹配时,端序决定了如何解释字节序列与值的关系。

如何处理端序

  • 在对外协议交互或磁盘持久化时,显式使用 hostToNetwork / networkToHost 或对应的大/小端转换函数。
  • 在内存扫描时,根据目标值的实际字节序(例如原始二进制模式或整数值)进行匹配。

参考