Я пишу анализатор ELF, но у меня возникли проблемы с правильным преобразованием порядка следования байтов. У меня есть функции для определения порядка следования байтов анализатора и порядка следования байтов объектного файла.
По сути, существует четыре возможных сценария.:
- Анализатор, скомпилированный с прямым порядком байтов, запускает объектный файл с обратным порядком байтов.
- ничего не нужно преобразовывать
- Анализатор, скомпилированный с прямым порядком байтов, работает с объектным файлом с прямым порядком байтов
- порядок байтов необходимо поменять местами, но ntohs/l ()и htons/l ()являются нулевыми макросами на машине с обратным порядком байтов, поэтому они не меняют порядок байтов.Вот в чем проблема.
- Анализатор, скомпилированный с прямым порядком байтов, запускает объектный файл с прямым порядком байтов.
- порядок байтов необходимо поменять местами, поэтому используйте htons ()для изменения порядка байтов.
- Скомпилированный анализатор с прямым порядком байтов работает с объектным файлом с прямым порядком байтов.
- ничего не нужно преобразовывать
Есть ли функция, которую я могу использовать для явного переключения порядка следования байтов/изменения порядка байтов, поскольку ntohs/l ()и htons/l ()учитывают порядок следования байтов хоста, а иногда и нет? конвертировать? Или мне нужно найти/написать свою собственную функцию порядка байтов подкачки?
задан xdumaine 26 April 2012 в 21:09
поделиться