0

我正在尝试将十六进制字符串转换为 Javascript 中的浮点数。

假设我有十六进制字符串“0082d241”。使用此在线转换器并选择Swap endianness,正确的浮点值是 26,3135。

我知道这是正确答案,因为它来自 TMP36 传感器。

我已经尝试了一些我在 SO 上找到的其他示例,例如Converting hexadecimal to float in javascript,但没有一个有效。

4

1 回答 1

3

第一步是使用您显示的页面上的源代码交换字节顺序。

然后您可以将十六进制字符串转换为浮点值。

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)));

于 2017-08-01T16:06:02.957 回答