在 JavaScript 中将浮点数转换为 32 位十六进制字符串

Azn*_*har 4 javascript floating-point hex

我有一个表示 gps 坐标的浮点值,我喜欢将其转换为 32 位十六进制字符串。

我尝试了此处描述的所有解决方案但每次都不是我所期望的结果。

例如,大多数“ToHex”函数:

var lat = 45.839152;
console.log(ToHex(lat));
Run Code Online (Sandbox Code Playgroud)

返回我'2d.56d0b30b5aa8'

但我期待结果为“42355b43”,因为大多数转换器返回

你知道我如何在 JavaScript 中得到 '42355b43' 吗?

谢谢 !

Nin*_*olz 7

您可以TypedArray使用ArrayBufferand获取对象DataView

然后将值设置为浮点数 32 并将视图读取为值的无符号整数 8 位。

const getHex = i => ('00' + i.toString(16)).slice(-2);

var view = new DataView(new ArrayBuffer(4)),
    result;

view.setFloat32(0, 45.839152);

result = Array
    .apply(null, { length: 4 })
    .map((_, i) => getHex(view.getUint8(i)))
    .join('');

console.log(result);
Run Code Online (Sandbox Code Playgroud)