【问题标题】:Can Someone give an actual implementation of the pseudo code to convert Host byte order to network byte Order有人可以给出将主机字节顺序转换为网络字节顺序的伪代码的实际实现吗
【发布时间】:2015-05-13 04:25:23
【问题描述】:

以下链接中提到了稳定的伪代码。 我想在 C++ 中实现它。我无法理解和执行这些 signof 和 exponentof 以及 mantissaof 操作。

how to convert double between host and network byte order?

void htond (const double hostDouble, uint8_t result[8])
{
  result[0] = signOf(hostDouble);
  result[1] = exponentOf(hostDouble);
  result[2..7] = mantissaOf(hostDouble);
}

【问题讨论】:

    标签: c++11 double htonl


    【解决方案1】:

    要获得符号(即使是负零),请使用std::signbit()

    要提取指数,请使用std::frexp()(或std::ilogb() 用于非二次幂基数)。请注意,您必须将零、无穷大和 NaN 作为特殊情况处理。

    尾数可以通过std::abs(std::ldexp(value, -exponent))(或std::scalbn()非二次方基数)获得;这将产生一个归一化的分数(范围取决于您用来提取指数的函数)。

    【讨论】:

    • 你能给我一个工作代码吗,例如输入:1000000015949038、1000000015949030 等
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2015-06-28
    • 2013-10-23
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多