小编dec*_*100的帖子

主机到网络双?

我想通过网络发送一些双精度浮点数.(标准C,标准套接字)没有htond或ntohd将数据转换为网络字节顺序和从网络字节顺序转换数据.我该怎么办?我脑子里有几个解决方案,但我想知道常见的做法是什么.

(我也想知道发送64位整数的常见做法,比如gstreamer使用的gint64值)

编辑:这是我想到的一个解决方案.我认为它适用于任何大小的整数,但它是否适合双打?

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;
        }  
    }
}
Run Code Online (Sandbox Code Playgroud)

c sockets double double-precision htonl

5
推荐指数
2
解决办法
5515
查看次数

标签 统计

c ×1

double ×1

double-precision ×1

htonl ×1

sockets ×1