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

标签 javascript floating-point hex

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

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

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

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

返回我 2d.56d0b30b5aa8

但我期望 42355b43 的结果为 most转换器返回

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

谢谢!

最佳答案

你可以拿TypedArray带有 ArrayBuffer 的对象和 DataView .

然后将值设置为 float 32 并将 View 读取为值的无符号整数 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);

关于javascript - 在 JavaScript 中将 float 转换为 32 位十六进制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47164675/

相关文章:

python - 如何在 CSV 到 JSON 转换中保持浮点精度(通过 pandas.read_csv)?

java - Java 中对 NaN 的困惑

javascript - 为什么我在 View 中看不到这个变量?

javascript - 将参数传递给 React 中的 props 函数

javascript - ExtJS监听器: anonymous function parameters

c - 小于 FLT_EPSILON 的最大数字是多少?

excel - 在 Excel 函数中将十六进制字符串转换为 base64

c++ - 如何处理高于 7FF 的十六进制值...64 位和 uint64_t 类型

c# - 在 .NET 中使用十进制或十六进制

javascript - HTML5 - Web SQL 数据库文件存储和所有表的创建位置