所以基本上我有几个以“ 3FF0000000000000”形式出现的十六进制值,我想从这些值中得到浮点值,就像在这里一样。所以在这种特殊情况下,我希望“ 20.000000000000000”为结果-我稍后将其修剪为仅5个小数,但这应该很容易。
我已经尝试了几种解决方案,但不幸的是,我对转换(以及javascript)了解得太少,以至于无法确切知道我可能做错了什么。
最新尝试如下所示:
const hexToFloat64 = (hex) => {
var int32 = [],
float64;
if (hex.length > 4) {
var high = hex.substr(0, 8),
low = hex.substr(8, 8);
int32.push(parseInt(high, 16), parseInt(low, 16));
}
var uint32 = new Uint32Array(int32);
float64 = new Float64Array(uint32.buffer);
var returnValue = float64[0];
return returnValue;
};
多谢!
这不是您确切问题的答案。这是解码十六进制的解决方案。那就是我在这里所做的一切。我没有上下文可以解决您的问题。
function convHexStringToString(ss) {
// ss length must be even (or 0) when passed to this function
var s = "";
var p;
if (ss.length > 0) {
if (ss.length % 2 == 0) {
var l = Math.floor(ss.length / 2); // floor must never have to do work
for (var i = 0; i < l; i++) {
var i2 = i * 2;
if (ss.charAt(i2) != "0") {
p = ss.charAt(i2) + ss.charAt((i2) + 1);
}
else {
p = ss.charAt((i2) + 1);
}
d = parseInt(p,16);
s += String.fromCharCode(d);
}
}
}
return s;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句