// 32位浮点数转换
function hexStringToFloat(hexString) {
// 移除前缀 '0x'(如果有的话)
if (hexString.startsWith('0x')) {
hexString = hexString.slice(2);
}
// 将十六进制字符串转换为十进制整数
let intValue = parseInt(hexString, 16);
// 使用IEEE 754标准将十进制整数转换为32位浮点数
let sign = (intValue & 0x80000000) !== 0 ? -1 : 1;
let exponent = ((intValue & 0x7F800000) >> 23) - 127;
let mantissa = (intValue & 0x007FFFFF) / 0x00800000;
return sign * Math.pow(2, exponent) * (1 + mantissa);
}
// 示例用法
let hexString = '3F800000';
let floatValue = hexStringToFloat(hexString).toFixed(2);
console.log(floatValue);
如果我没猜错的话,能发现这篇文章的应该是在做数据包解析吧hh