![]() |
|
![]() ![]() ![]() |
|
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
считал из сетевого буфера данные – допустим одно значение типа unsigned short = 0xFF35:
могу обращаться (считать значение) к его байтам:
Мне надо перевернуть данное число (0xFF35) – хочу воспользоваться функцией ntohs… Но как мне корректно задать параметр у этой функции? Само число я не имею, а имею только адреса ячеек памяти, где оно лежит – то есть надо как-то “сложить” его 2 разряда (см. код выше) и взять от этого дела ntohs…Как это сделать? И желательно получить (оставить) это число в 16-ричной системе счисления - в итоге должно получиться 0x35FF… И вообще – в линуксе (пишу под Qt 4.6) есть функции ntohl, ntohs??? какой у них инклудник? |
|||
|
||||
djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 5 Всего: 39 |
>какой у них инклудник?
man 3 htons А если хостовый порядок байт соответствует сетевому (big-endian), то вообще ничего не перевернется. И на засыпку, раз уж к байтам и так можете обращаться, почему бы и не поменять их местами вручную?.. -------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
djamshud: так в том то и дело, что хостовый порядок байт НЕ соответствует сетевому...
понятное дело, что можно написать свои функции ручной перестановки байтов для различных типов данных (я уже их в принципе написал), но уж коли есть стандартные функции для этих же целей, то почему бы ими не воспользоваться? весь вопрос в том как именно это корректно сделать, имея не число целиком, а только возможность обращения к отдельным его байтам... подскажите пож-та как в таком случае задать правильно аргумент для ntohl/ntohs... |
|||
|
||||
djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 5 Всего: 39 |
При не дай бог портировании на другую архитектуру вы ошибку хрен выловите. -------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |