我正在编写一个 ELF 分析器,但是在正确转换字节序时遇到了一些麻烦。我有函数来确定分析器的字节序和目标文件的字节序。
基本上,有四种可能的情况:
- 大端编译分析器在大端目标文件上运行
- 没有什么需要转换
- 大端编译分析器在小端目标文件上运行
- 字节顺序需要交换,但 ntohs/l() 和 htons/l() 在大端机器上都是空宏,因此它们不会交换字节顺序。这就是问题
- 小端编译分析器在大端目标文件上运行
- 字节顺序需要交换,所以使用 htons() 交换字节顺序
- 小端编译分析器在小端目标文件上运行。
- 没有什么需要转换
有没有我可以用来显式交换字节顺序/更改字节序的函数,因为 ntohs/l() 和 htons/l() 考虑了主机的字节序并且有时不转换?还是我需要查找/编写我自己的交换字节顺序函数?