C++面试题更新 2026-08-05

请解释大端序(Big-Endian)和小端序(Little-Endian)的概念,并分析它们在不同应用场景中的选择依据。

技术原理方案权衡C++

考察说明

考查对大端序和小端序基本概念及其应用场景的理解。

回答思路

  1. 【回答框架 1】大端序是指高位字节存储在内存的低地址处,低位字节存储在高地址处;小端序则相反,低位字节存储在低地址处。以数值0x12345678为例,大端序存储为12 34 56 78,小端序为78 56 34 12。
  2. 【回答框架 2】x86架构通常采用小端序,而网络协议中规定使用大端序,即网络字节序。因此在网络编程中,需要使用htons、htonl等函数进行转换。
  3. 【回答框架 3】选择大端序或小端序取决于应用场景:网络通信统一使用大端序以保证兼容性;而内部处理时,小端序便于类型转换,例如将int强制转换为char时,可以直接得到低位字节。
  4. 【回答框架 4】在涉及跨平台数据交换时,必须明确字节序并进行转换,否则会导致数据解析错误。
  5. 【关键点 1】大端序:高位字节在低地址,小端序:低位字节在低地址。
  6. 【关键点 2】网络字节序为大端序,x86为小端序。
  7. 【关键点 3】跨平台数据交换需进行字节序转换。
  8. 【易错点 1】混淆网络字节序与主机字节序。
  9. 【易错点 2】忽略字节序问题导致数据转换错误。