如何判断机器的endianness
字节层次上
_Bool is_little_endian() { int a = 1; char* p = (char*)&a; return *p == 1; }
或
_Bool is_little_endian() { union { int a; char b; } u; u.a = 1; return u.b == 1; }
位层次上
_Bool is_little_endian() { union { unsigned char a; struct { unsigned char b0 : 1; unsigned char : 7; } b; } u; u.a = 1; return u.b.b0 == 1; }
比较同一块内存的不同表示
big endian:
+----+----+----+----+
| 00 | 00 | 00 | 01 |
+----+----+----+----+
-------- 内存地址增长 -------->
little endian:
+----+----+----+----+
| 01 | 00 | 00 | 00 |
+----+----+----+----+
-------- 内存地址增长 -------->
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步