crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> использование 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??? какой у них инклудник?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Гость_Гость_*
сообщение 16.5.2010, 17:28
Сообщение #2





Гости








    


Цитата(dimon11782 @ 7.5.2010, 20:03) *
[b]char *buf[100];
Тут косяк с типом. - не `char *' а 'char'. А еще лучше - uchar.

пишется так:

#include <QtEndian>

...
quint16_t x = qFromBigEndian<quint16_t>((const uchar*)buf);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


9 чел. читают эту тему (гостей: 9, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 1.12.2024, 21:07