编程语言
首页 > 编程语言> > 在JavaScript中将float转换为32位十六进制字符串

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

作者:互联网

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

我尝试了每一个描述here的解决方案,但是每次,结果都不是我所期望的.

例如,大多数“ ToHex”功能:

var lat = 45.839152;
console.log(ToHex(lat));

返回我’2d.56d0b30b5aa8′

但我期望结果为’42355b43′,因为most转换器返回

您知道如何在JavaScript中得到“ 42355b43”吗?

谢谢 !

解决方法:

您可以将TypedArray对象与ArrayBufferDataView一起使用.

然后将值设置为float 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);

标签:floating-point,hex,javascript
来源: https://codeday.me/bug/20191110/2015139.html