我正在用 C 语言在 Linux 上编写一个程序来分析嵌入式系统生成的核心文件。核心文件可能是小端 (ARM) 或大端 (MIPS),分析它们的程序可能在小端主机 (x86) 或大端 (PowerPC) 上运行。
通过查看标题,我知道核心是 LE 还是 BE。我宁愿我的程序不需要知道它运行的主机是小端还是大端,我想使用 API 为我处理它。如果没有更好的选择,我想我会开始依赖#ifdef __BIG_ENDIAN__。
在 Linux 内核中,我们有 cpu_to_le32 等人将本机字节顺序转换为小端等。在用户空间中有 htonl 等人,它们从本机转换为大端,但我找不到本地到小端的等价物。
任何人都可以为用户空间推荐一个合适的 API 吗?
编辑:为了清楚起见,我正在寻找一个 API,它已经知道我的 CPU 是大端还是小端并相应地交换字节。我不想为此用#ifdefs 乱扔我的代码。我不只是在寻找代码片段来交换字节;谢谢你,但这不是重点。