Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / htonl() / 8 сообщений из 8, страница 1 из 1
17.10.2007, 12:59:33
    #34874667
гестег
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
htonl()
ещё раз всем привет, что может означать запись:

Код: plaintext
a = htonl(b);
...
Рейтинг: 0 / 0
17.10.2007, 13:05:10
    #34874708
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
htonl()
автор
BYTEORDER(3) Linux Programmer’s Manual BYTEORDER(3)

НАЗВАНИЕ
htonl, htons, ntohl, ntohs - переводят данные из узлового порядкарасположения байтов в сетевой и наоборот

СИНТАКСИС
#include <netinet/in.h>

uint32_t htonl(uint32_t hostlong);

uint16_t htons(uint16_t hostshort);

uint32_t ntohl(uint32_t netlong);

uint16_t ntohs(uint16_t netshort);

ОПИСАНИЕ
Функция htonl() преобразует узловой порядок расположениябайтов положительного целого hostlong в сетевой порядок распол
ожения байтов.

Функция htons() преобразует узловой порядок расположения байтовположительного короткого целого hostshort в сетевой пор
ядок расположения байтов.

Функция ntohl() преобразует сетевой порядок расположения байтовположительного целого netlong в узловой порядок располо
жения байтов.

Функция ntohs() преобразует сетевой порядок расположения байтовположительного короткого целого netshort в узловой поря
док расположения байтов.

В архитектуре i80x86 узловой порядок расположения байтов - этотакой порядок, при котором последний значимый байт стоит
в начале числа, а при сетевом порядке расположения байтов, используемом в интернет, наоборот: первый значимый байт сто
ит в начале числа.

СООТВЕТСТВИЕ СТАНДАРТАМ
BSD 4.3

СМ. ТАКЖЕ
gethostbyname(3), getservent(3)

BSD April 15, 1993 BYTEORDER(3)
...
Рейтинг: 0 / 0
17.10.2007, 13:08:51
    #34874723
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
htonl()
...
Рейтинг: 0 / 0
17.10.2007, 16:05:52
    #34875616
гестег
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
htonl()
нужен аналог этого дела под язык HaXe... Никто не может дать синтаксис?
...
Рейтинг: 0 / 0
17.10.2007, 16:10:02
    #34875636
гестег
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
htonl()
всмысле реализацию функции на С(впрочем если есть на HaXe это ещё лучше:-))
...
Рейтинг: 0 / 0
18.10.2007, 10:20:29
    #34877039
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
htonl()
Вроде, байты надо задом на перед переставить. Для убидительности надо прогнать эту функцию и посмотреть результат.
...
Рейтинг: 0 / 0
18.10.2007, 10:41:43
    #34877119
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
htonl()
Сетевой порядок байт - big endian, интеловский little endian. Поэтому
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
typedef unsigned int uint32;
typedef unsigned char byte;
uint32 htonl(uint32 i)
{
  byte b[ 4 ] = &i;
  for (int i =  0 ; i <  4 ; ++i)
    b[i] = ((byte*) &i)[  3  - i ];
  return *(uint32*)b;
}
...
Рейтинг: 0 / 0
18.10.2007, 11:29:19
    #34877298
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
htonl()
blindedСетевой порядок байт - big endian, интеловский little endian. Поэтому
...

Смутило только то, что существуют пары функций для преобразования. Хотя выполняют они одно и то же.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / htonl() / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]