Как преобразовать в байт-порядок маленького эндианского байта, обратный порядок сетевого байта, независимым от архитектуC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как преобразовать в байт-порядок маленького эндианского байта, обратный порядок сетевого байта, независимым от архитекту

Сообщение Anonymous »

Обычно при написании интерфейса сети/сокета в C можно использовать семейство функций NTOH и hton для преобразования между порядок байта хоста и порядок сетевого байта, который является большим эндианским. /p>
Если кто -то нарушит правила и хотел написать приложение, которое сообщалось, отправляя данные в Little Endian Order вместо заказа сетевых байтов, как это сделать? < /p>
Мои первоначальные мысли - это применение по обе стороны от подключения, чтобы определить, какое упорядочение байтов было скомпилировано, и использовать эту информацию, чтобы вызвать пользовательскую функцию, которая, вероятно, называет внутреннюю часть, такую ​​как одна из Варианты BytesWap (функция GCC /MSVC, которая завершает инструкцию сборки). < /p>
Есть ли лучшая альтернатива? < /p>

< P> Чтобы дать некоторые дальнейшие разъяснения для этого вопроса.
Обычно при написании сетевого приложения, независимо от энджеун целевой машины, можно сделать следующее:
  • Будут некоторые данные, которые необходимо отправить /получить из буфера. < /li>
    Эти данные могут быть структурой < /код > В стеке, где -то на куче, что бы это ни было. Он будет содержать какой-то тип, такой как int64_t .
  • Нам нужно отправить эти типы в формате биг-эндэдиана или порядок сетевого байта.
    < li> мы используем семейство Hton для преобразования в One Direction и NTOH для преобразования в обратном направлении
  • Мы записываем некоторые данные в буфер с использованием Эти функции, перед отправкой этих данных с помощью send или выполнять обратную операцию с Recv
Точка, вы можете Напишите исходный код независимым от археологии. Не имеет значения, является ли целевой машины с крупным или маленьким эндэдианом, если вы составляете программу для правильной целевой архитектуры, Hton и ntoh сделают правильные вещи. (Будь то операция по обмену байтов или поход.) < /P>
Чтобы вернуться к исходному вопросу функций в ntoh и hton , которые выполняют другую альтернативную операцию. htonxxx преобразует Big Endian в Little Endian, а ntohxxx преобразует Little Endian в Big Endian. htonxxx является NOOP, а ntohxxx - NOOP. Курс.

Подробнее здесь: https://stackoverflow.com/questions/794 ... te-order-i
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»