【发布时间】:2012-05-23 22:01:51
【问题描述】:
谁能告诉我如何将双精度转换为网络字节顺序。 我试过了
uint32_t htonl(uint32_t hostlong);
uint16_t htons(uint16_t hostshort);
uint32_t ntohl(uint32_t netlong);
uint16_t ntohs(uint16_t netshort);
函数,它们运行良好,但它们都没有进行双重(浮点)转换,因为这些类型在每个架构上都是不同的。通过 XDR,我发现了双浮点精度格式表示(http://en.wikipedia.org/wiki/Double_precision),但那里没有字节排序。
所以,如果有人能帮助我解决这个问题,我将不胜感激(C 代码会很棒!)。 注意:操作系统是 Linux 内核 (2.6.29),ARMv7 CPU 架构。
【问题讨论】:
-
double 没有网络字节顺序,因为它们没有单一定义的网络表示。如果你真的想要或将它们表示为分子和分母,你可以将它们分解为尾数、符号和指数,但这很繁琐。
标签: networking linux-kernel embedded arm endianness