хост к сети удваивается?

Я бы хотел послать по сети несколько чисел с плавающей запятой двойной точности. (стандартный 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;
        }  
    }
}
5
задан dec-vt100 21 May 2011 в 21:54
поделиться