javascript - 在 Javascript 中从缓冲区读取 C++ 浮点值

标签 javascript c++ struct floating-point

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

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

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

如何使用 C++ 结构缓冲区将 C++ 浮点值映射到 javascript 浮点值?

最佳答案

您看到的是 32 位 float 的原始位格式。这应该可以将其转换为 native 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);
}

关于javascript - 在 Javascript 中从缓冲区读取 C++ 浮点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24524578/

相关文章:

javascript - 如何在 react-scripts v3 中使用 redux-promise-middleware

javascript - 如何从 Javascript 准备/构建多维数组以发送到 PHP

python - 用opencv提取最大的blob

c++ - 用整数拼图给定的正方形;使用递归的解决方案

c++ - 获取存储在 C++ 集合中的结构中的值

c - typedef 可能未声明或不明确

struct - 了解结构字段突变

javascript - 试图通过两条线获得自定义和无限的 Owl Carousel

php - OSClass 中的 JavaScript 在父类别在 Firefox 中无效后显示子类别

c++ - CMake 将文件复制到当前工作目录 Linux