在JavaScript中将float转换为32位十六进制字符串
作者:互联网
我有一个表示gps坐标的浮点值,我喜欢将其转换为32位十六进制字符串.
我尝试了每一个描述here的解决方案,但是每次,结果都不是我所期望的.
例如,大多数“ ToHex”功能:
var lat = 45.839152;
console.log(ToHex(lat));
返回我’2d.56d0b30b5aa8′
但我期望结果为’42355b43′,因为most转换器返回
您知道如何在JavaScript中得到“ 42355b43”吗?
谢谢 !
解决方法:
您可以将TypedArray
对象与ArrayBuffer
和DataView
一起使用.
然后将值设置为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