Я бы хотел послать по сети несколько чисел с плавающей запятой двойной точности. (стандартный C, стандартные сокеты) Нет htond или ntohd для преобразования данных в сетевой порядок байтов и обратно. Что я должен делать? У меня в голове есть пара решений, но я хотел бы знать, какова общая практика.
(Я также хотел бы знать, какова обычная практика отправки 64-битных int, например значений 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;
}
}
}