我正在写一个ELF分析器,但我有一些麻烦,正确地转换字节顺序。我有函数来确定分析器的字节顺序和目标文件的字节顺序。字节替换没有ntohs
基本上有四种可能:
- 在大端对象文件大端编译分析仪运行
- 没有什么需要转换
- 大端编译分析仪运行在一个小端文件目录文件
- 字节顺序需要交换,但是ntohs/l()和htons/l()都是空的宏o n是一个大型机器,所以它们不会交换字节顺序。 这就是问题
- 在大端对象文件
- 的字节顺序需要换一个小尾数编译分析仪运行,所以用htons()来交换字节顺序
- 一个小端编译分析器运行在一个小端文件上。
- 没有什么需要转换
有没有我可以用一个函数来显式地调换字节顺序/更改端,因为还有ntohs/L()和htons/L()把主机的字节顺序考虑有时不转换?或者我需要找到/写我自己的交换字节顺序功能?
虽然C++在技术上未定义的行为。 – bames53 2012-04-26 21:12:51
但是,我们如何知道正确的顺序? – 2012-04-26 21:13:04
@BoPersson OP知道,当他想交换字节。我编辑了我的答案以公开更合适的解决方案。 – 2012-04-26 21:24:59