Я хотел бы отправить несколько чисел с плавающей запятой двойной точности по сети. (стандартный C, стандартные сокеты) Нет htond или ntohd для преобразования данных в сетевой порядок байтов и из него. Что я должен делать? У меня есть пара решений в моей голове, но я хотел бы знать, какова общая практика.
(я также хотел бы знать, какова обычная практика отправки 64-битных целочисленных значений, например значений gint64, используемых gstreamer)
редактировать:
Это одно решение, о котором я подумал. Я предполагаю, что это работает для целых чисел любого размера, но правильно ли это для двойных чисел?
void swap_if_necessary (void* buff, int buff_len)
{
uint32_t foo = 1;
if ( htonl(foo) != foo )
{
char* to_swap = (char*)buff;
int i;
for (i = 0; i < buff_len/2; i++)
{
char swap_buff = to_swap[i];
to_swap[i] = to_swap[buff_len -1 -i];
to_swap[buff_len -1 -i] = swap_buff;
}
}
}