использование ntohs в Qt под линух |
Здравствуйте, гость ( Вход | Регистрация )
использование ntohs в Qt под линух |
dimon11782 |
7.5.2010, 20:03
Сообщение
#1
|
Студент Группа: Участник Сообщений: 27 Регистрация: 13.4.2010 Пользователь №: 1628 Спасибо сказали: 0 раз(а) Репутация: 0 |
считал из сетевого буфера данные – допустим одно значение типа unsigned short = 0xFF35:
могу обращаться (считать значение) к его байтам: char *buf[100]; *((unsigned char*)&buf) *((unsigned char*)&buf+1) Мне надо перевернуть данное число (0xFF35) – хочу воспользоваться функцией ntohs… Но как мне корректно задать параметр у этой функции? Само число я не имею, а имею только адреса ячеек памяти, где оно лежит – то есть надо как-то “сложить” его 2 разряда (см. код выше) и взять от этого дела ntohs…Как это сделать? И желательно получить (оставить) это число в 16-ричной системе счисления - в итоге должно получиться 0x35FF… И вообще – в линуксе (пишу под Qt 4.6) есть функции ntohl, ntohs??? какой у них инклудник? |
|
|
ViGOur |
7.5.2010, 21:18
Сообщение
#2
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Смотри: #include <netinet/in.h>
В нем обьявлены:
|
|
|
Litkevich Yuriy |
7.5.2010, 23:28
Сообщение
#3
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
это явно не Qt.
|
|
|
dimon11782 |
8.5.2010, 22:14
Сообщение
#4
|
Студент Группа: Участник Сообщений: 27 Регистрация: 13.4.2010 Пользователь №: 1628 Спасибо сказали: 0 раз(а) Репутация: 0 |
ViGOur: понятно...а как мне решить обозначенную в начале темы задачку "объединения байтов для взятия от них ntohl-функции"?
Litkevich Yuriy: что значит "это явно не Qt"? в нем нельзя использовать эти функции? |
|
|
Litkevich Yuriy |
8.5.2010, 22:19
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
dimon11782 |
8.5.2010, 22:26
Сообщение
#6
|
Студент Группа: Участник Сообщений: 27 Регистрация: 13.4.2010 Пользователь №: 1628 Спасибо сказали: 0 раз(а) Репутация: 0 |
так что по поводу решения обозначенной в начале темы проблемы?
|
|
|
Litkevich Yuriy |
8.5.2010, 22:42
Сообщение
#7
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Само число я не имею, а имею только адреса ячеек памяти, где оно лежит – то есть надо как-то ”сложить” его 2 разряда (см. код выше) всё таки байта? Вообще задачка по Си простейшая.
|
|
|
igor_bogomolov |
9.5.2010, 1:36
Сообщение
#8
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
|
|
|
dimon11782 |
10.5.2010, 0:19
Сообщение
#9
|
Студент Группа: Участник Сообщений: 27 Регистрация: 13.4.2010 Пользователь №: 1628 Спасибо сказали: 0 раз(а) Репутация: 0 |
Litkevich Yuriy: да с самодельным примером мне все понятно - но уж коли для таких целей уже есть стандартные функции, то почему бы ими не воспользоваться и зачем городить свои?
igor_bogomolov: дайте пож-та пример чик на использование приведенных В Вашей ссылке методов для перекрутки числа, допустим, 0xFF92 (я что-то не совсем понял какая из приведенных в ссылке функций за что отвечает и как ее надо корректно использовать?)... |
|
|
igor_bogomolov |
10.5.2010, 0:52
Сообщение
#10
|
Профессионал Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: 29 |
Цитата(вывод) bigEndian = 0xff92
litttleEndian = 0x92ff0000 |
|
|
Текстовая версия | Сейчас: 1.12.2024, 21:02 |