将十六进制转换为 float32_LE

convert hex to float32_LE

希望你和你的家人一切安好。 我很难将十六进制转换为 float32_LE。我尝试了一些不同的在线 JavaScript 编辑器,但效果不佳。 如果有人知道如何找到将十六进制转换为 float32_LE 的最佳资源。我提前感谢。 我有十六进制值 = 0xcf91873b。它应该是 0.004137255。我找到了直接对话,但我需要一些背景资料。所以我可以在代码中使用它。

谢谢 亲切的问候。

DataView.prototype.getFloat32() 方法允许您使用无符号整数和 return 浮点表示。第一个参数是byteOffset;这应该是 0。该方法还需要一个 littleEndian 参数;我们想将其设置为 true.

最终解压缩的 float 32 值为 0.004137254785746336

编辑:我添加了解码多个十六进制值的功能。

// 
const parseFloat = (hex, littleEndian) => {
  const
    octets = Math.floor(hex.replace(/^0x/, '').length / 2),
    dataView = new DataView(new ArrayBuffer(octets));
  dataView.setUint32(0, parseInt(hex, 16));
  return dataView.getFloat32(0, littleEndian);
}

const ui = {
  input: document.querySelector('#input'),
  output: document.querySelector('#output'),
  convert: document.querySelector('#convert')
};

const handleConvert = (e) => {
  ui.output.value = ui.input.value.trim().split(/\s+/).map(hex =>
    parseFloat(hex, true)).join(' ');
};

ui.convert.addEventListener('click', handleConvert);
body,html{width:100%;height:100%;margin:0;padding:0;background:#000;color:#0f0}
body{display:flex;flex-direction:column;justify-content:center;align-items:center}
textarea{flex:1;margin:.5em;width:calc(100% - 2em);font-family:monospace;border:thin solid #0f0;background:#000;color:#0f0;resize:none}
button{margin:0;background:#000;color:#0f0;border:thin solid #0f0;padding:.5em}
button:hover{background:#0f0;color:#000;cursor:pointer}
<textarea id="input">0xcf91873b 0xcf91873b</textarea>
<button id="convert">Convert</button>
<textarea id="output"></textarea>