目前我正在开发一些客户端(html5)< - > node.js< - > server(c ++)项目。 服务器向我发送结构化数据(标准C ++结构)。我在node.js中读取字符,数组和int32没有问题,但我无法正确读取浮点值。
当我尝试将其视为整数时 - 结果我得到大数字。
例如: 目标值约为280 缓冲区的重读值为:1133248512
如何使用C ++ struct buffer将C ++ float值映射到javascript float值?
答案 0 :(得分:0)
您所看到的是32位Float的原始位格式。这应该可以将它转换为本机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);
}