javascript - 将非类型化 32 位整数数组转换为 UInt8Array 的最有效方法?

标签 javascript typed-arrays

我需要获取一个填充有有效 32 位有符号整数的标准 JavaScript 数组,并将其转换为 UInt8Array。例如,考虑以下标准 JavaScript 数组:

[255, 3498766, -99]

我希望生成的 UInt8Array 包含这些数字的有符号 32 位表示形式:

255     = [0x00, 0x00, 0x00, 0xFF]
3498766 = [0x00, 0x35, 0x63, 0x0E]
-99     = [0xFF, 0xFF, 0xFF, 0x9D]

因此,给定输入 [255, 3498766, -99],结果将是:

[0x00, 0x00, 0x00, 0xFF, 0x00, 0x35, 0x63, 0x0E, 0xFF, 0xFF, 0xFF, 0x9D]

我可以想到简单的方法来实现这一点,但我正在寻找尽可能直接的转换。

最佳答案

a = [255, 3498766, -99]
b = new Uint8Array(Int32Array.from(a).buffer)
console.log(b)

结果将采用平台字节顺序,即当今大多数处理器上的 LE。如果您确实想要像示例中那样使用大端字节序,则需要对 DataView.getInt32 进行一些额外的修改(有关详细信息,请参阅 here)。

关于javascript - 将非类型化 32 位整数数组转换为 UInt8Array 的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39947765/

相关文章:

javascript - 获取 Uint16Array 成员的单独低字节和高字节

javascript - 使用 svg.js 库包装现有的 SVG 元素

JavaScript TypedArray 混合类型

javascript - 在 Maven 2 中添加 javascript 依赖项,如 java 依赖项?

javascript - 添加行无法正常工作

javascript - 将 float 重新解释为整数

javascript - 使用新的 ES6 Array.from() 方法

javascript - 如何使用 webgl 处理和更新大型数组?

javascript - 循环填充表格

javascript - 使用 Jquery 在长时间流程执行之前和之后更改元素的 css