我正在尝试将十六进制字符串转换为Javascript中的浮点数。
假设我有十六进制字符串" 0082d241"。使用this online converter并选择交换字节顺序,正确的浮点值为26,3135。
我知道这是正确答案,因为它来自TMP36传感器。
我尝试了其他一些我在SO上找到的例子,比如Converting hexadecimal to float in javascript,但没有一个能够奏效。
答案 0 :(得分:1)
第一步是使用您展示的page上的源代码交换字节序。
然后您可以将十六进制字符串转换为浮点值。
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)));