通过查看头文件,我知道核心是LE还是BE。我希望我的程序不需要知道它运行的主机是小端还是大端,我想使用API来处理它。如果没有更好的选择,我猜我将开始依赖于#ifdef __BIG_ENDIAN__。
在Linux内核中,我们有cpu_to_le32等函数将本地字节顺序转换为小端等等。在用户空间中,有htonl等函数将本地字节顺序转换为大端,但我找不到本地字节顺序转换为小端的等效函数。
有人能建议一个适合用户空间的API吗?
编辑:为了明确起见,我正在寻找一个API,它已经知道我的CPU是大端还是小端,并相应地交换字节。我不想在代码中使用#ifdefs。我不仅仅是在寻找交换字节的代码片段;谢谢你提供这些,但那不是重点。
#ifdef BIG_ENDIAN
的方法:https://commandcenter.blogspot.com/2012/04/byte-order-fallacy.html - Sandburg