Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / А есть ли в boost кроссплатформенный аналог htonl/htons? / 9 сообщений из 9, страница 1 из 1
20.07.2013, 01:39
    #38337699
А есть ли в boost кроссплатформенный аналог htonl/htons?
А есть ли в boost кроссплатформенный аналог htonl/htons или они существуют подо все платформы: Win/Unix/Linux?
...
Рейтинг: 0 / 0
20.07.2013, 01:42
    #38337702
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А есть ли в boost кроссплатформенный аналог htonl/htons?
аналог htonl/htons,

Существуют везде где есть сокеты.
В перечисленных точно.

А в бусте - не знаю.
...
Рейтинг: 0 / 0
20.07.2013, 11:35
    #38337789
vromanov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А есть ли в boost кроссплатформенный аналог htonl/htons?
Anatoly Moskovsky,

Наблюдал я как-то проект, к кторому буст был для подобной фигни прикручен.
...
Рейтинг: 0 / 0
20.07.2013, 13:34
    #38337842
А есть ли в boost кроссплатформенный аналог htonl/htons?
vromanovAnatoly Moskovsky,

Наблюдал я как-то проект, к кторому буст был для подобной фигни прикручен.
Так если в бусте нет этих функций, а они есть нативно в OS-API, то зачем прикручивать буст?
...
Рейтинг: 0 / 0
21.07.2013, 02:23
    #38338069
Новый Год
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А есть ли в boost кроссплатформенный аналог htonl/htons?
а есть чтото стандартное для восьмибайтного инта?

тоесть я даю восьмибайтный инт, а мне возвращает восьмибайтный инт в сетевом формате
...
Рейтинг: 0 / 0
21.07.2013, 02:35
    #38338074
А есть ли в boost кроссплатформенный аналог htonl/htons?
Новый Года есть чтото стандартное для восьмибайтного инта?

тоесть я даю восьмибайтный инт, а мне возвращает восьмибайтный инт в сетевом формате
Судя по здесь - нет. Там предлагают самому определять BE/LE и самому реализовать htonll/ntohll.
...
Рейтинг: 0 / 0
21.07.2013, 02:38
    #38338076
Новый Год
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А есть ли в boost кроссплатформенный аналог htonl/htons?
аналог htonl/htonsНовый Года есть чтото стандартное для восьмибайтного инта?

тоесть я даю восьмибайтный инт, а мне возвращает восьмибайтный инт в сетевом формате
Судя по здесь - нет. Там предлагают самому определять BE/LE и самому реализовать htonll/ntohll.
да, я так и делаю
и ведь даже макросов стандартных нет, чтобы отличить big endian от little endian
...
Рейтинг: 0 / 0
21.07.2013, 11:47
    #38338118
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А есть ли в boost кроссплатформенный аналог htonl/htons?
Новый Годи ведь даже макросов стандартных нет, чтобы отличить big endian от little
endian
Есть стандартный тест в autoconf.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
21.07.2013, 13:38
    #38338162
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
А есть ли в boost кроссплатформенный аналог htonl/htons?
Есть еще встроенные в GCC функции __builtin_bswapXXXX для смены порядка байтов, которые можно имспользовать для реализации своих htonX/ntohX при условии что вы знаете порядок вашей платформы.
В VS тоже есть.
Источник: http://stackoverflow.com/questions/105252/how-do-i-convert-between-big-endian-and-little-endian-values-in-c

Существует также универсальный алгоритм на С без необходимости определения платформы.
Но он имеет оверхед (по крайней мере на BE-платформах, где все эти функции ничего не должны делать, да и на LE думаю он тоже медленнее вышеупомянутых __builtin_bswapXXXX)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
uint64_t
ntoh64(const uint64_t *input)
{
    uint64_t rval;
    uint8_t *data = (uint8_t *)&rval;

    data[0] = *input >> 56;
    data[1] = *input >> 48;
    data[2] = *input >> 40;
    data[3] = *input >> 32;
    data[4] = *input >> 24;
    data[5] = *input >> 16;
    data[6] = *input >> 8;
    data[7] = *input >> 0;

    return rval;
}


Источник: http://stackoverflow.com/questions/809902/64-bit-ntohl-in-c
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / А есть ли в boost кроссплатформенный аналог htonl/htons? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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