从十六进制到浮动 - Javascript

时间:2017-08-01 15:29:17

标签: javascript lorawan

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

假设我有十六进制字符串" 0082d241"。使用this online converter并选择交换字节顺序,正确的浮点值为26,3135。

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

我尝试了其他一些我在SO上找到的例子,比如Converting hexadecimal to float in javascript,但没有一个能够奏效。

1 个答案:

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