gpt4 book ai didi

javascript - 如何将两个16位整数(高位字/低位字)转换为32位 float ?

转载 作者:行者123 更新时间:2023-11-29 16:06:19 30 4
gpt4 key购买 nike

我有两个 16 位整数原始数据。

例如:
高位字 = 17142(十进制)或 0100001011110110(二进制)
低位字 = 59759(十进制)或 1110100101111001(二进制)

如果把两个word一起看成一个32bit的float数据,就是"123.456"
二进制 --> 01000010111101101110100101111001

如何在 Javascript 中将整数数组 [59759 , 17142] 转换为 float 123.456?

注意:[ X (16bit low word) , Y (16 bit high word) ] ==> Z (32bit float)

最佳答案

您可以使用 typed arrays 执行此操作和 ArrayBuffer ,它允许您以不同的方式解释相同的位(但字节序是特定于平台的)。也可以使用 DataView在缓冲区上,它可以让您控制字节顺序。

这是与我平台的字节序一起工作的类型化数组方法,请参阅评论:

// Create a buffer
var buf = new ArrayBuffer(4);
// Create a 16-bit int view of it
var ints = new Uint16Array(buf);
// Fill in the values
ints[0] = 59759;
ints[1] = 17142;
// Create a 32-bit float view of it
var floats = new Float32Array(buf);
// Read the bits as a float; note that by doing this, we're implicitly
// converting it from a 32-bit float into JavaScript's native 64-bit double
var num = floats[0];
// Done
console.log(num);

这是 DataView 方法,请注意以相反的顺序写入整数:

// Create a buffer
var buf = new ArrayBuffer(4);
// Create a data view of it
var view = new DataView(buf);
// Write the ints to it
view.setUint16(0, 17142);
view.setUint16(2, 59759);
// Read the bits as a float; note that by doing this, we're implicitly
// converting it from a 32-bit float into JavaScript's native 64-bit double
var num = view.getFloat32(0);
// Done
console.log(num);

关于javascript - 如何将两个16位整数(高位字/低位字)转换为32位 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40970739/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com