【问题标题】:Reading C++ float value from buffer in Javascript从 Javascript 中的缓冲区读取 C++ 浮点值
【发布时间】:2014-08-22 20:35:56
【问题描述】:

目前我正在开发一些客户端(html5)node.js服务器(c++)项目。 服务器向我发送结构化数据(标准 C++ 结构)。我在 node.js 中读取字符、数组和 int32 没有问题,但我无法正确读取浮点值。

当我尝试将其视为整数时 - 结果我得到很大的数字。

例如: 目标值在280左右 从缓冲区读取的值为:1133248512

如何使用 C++ struct buffer 将 C++ 浮点值映射到 javascript 浮点值?

【问题讨论】:

标签: javascript c++ struct floating-point


【解决方案1】:

您看到的是 32 位浮点数的原始位格式。这应该可以将其转换为原生 javascript double:

function f32bit_double(x) {
    // handle sign bit
    if (x < 0) {
        x += 2147483648;
        s = -1;
    } else {
        s = 1;
    }

    r = x % 8388608; // raw significand
    e = (x-r) >> 23; // raw exponent

    if (e === 0) {
        // subnormal
        e -= 126;
        r = r/8388608;
    } else if (e == 255) {
        // inf or nan
        return r === 0 ? s*Infinity : NaN;
    } else {
        // normalised
        e -= 127;
        r = 1+r/8388608;
    }
    return s*r*Math.pow(2,e);
}

【讨论】:

    猜你喜欢
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-28
    • 2013-06-04
    • 1970-01-01
    • 2013-06-29
    相关资源
    最近更新 更多