我正在尝试将十六进制字符串转换为 Javascript 中的浮点数。
假设我有十六进制字符串“0082d241”。使用此在线转换器并选择Swap endianness,正确的浮点值是 26,3135。
我知道这是正确答案,因为它来自 TMP36 传感器。
我已经尝试了一些我在 SO 上找到的其他示例,例如Converting hexadecimal to float in javascript,但没有一个有效。
我正在尝试将十六进制字符串转换为 Javascript 中的浮点数。
假设我有十六进制字符串“0082d241”。使用此在线转换器并选择Swap endianness,正确的浮点值是 26,3135。
我知道这是正确答案,因为它来自 TMP36 传感器。
我已经尝试了一些我在 SO 上找到的其他示例,例如Converting hexadecimal to float in javascript,但没有一个有效。
第一步是使用您显示的页面上的源代码交换字节顺序。
然后您可以将十六进制字符串转换为浮点值。
function flipHexString(hexValue, hexDigits) {
var h = hexValue.substr(0, 2);
for (var i = 0; i < hexDigits; ++i) {
h += hexValue.substr(2 + (hexDigits - 1 - i) * 2, 2);
}
return h;
}
function hexToFloat(hex) {
var s = hex >> 31 ? -1 : 1;
var e = (hex >> 23) & 0xFF;
return s * (hex & 0x7fffff | 0x800000) * 1.0 / Math.pow(2, 23) * Math.pow(2, (e - 127))
}
console.log(hexToFloat(flipHexString("0x0082d241", 8)));
console.log(hexToFloat(flipHexString("0x5d7e2842", 8)));