【发布时间】:2021-08-21 21:59:29
【问题描述】:
假设我将二进制文件读入 Buffer 对象,如下行所示
const fs = require('fs');
var file_content = fs.readFileSync(fileNamePath);
现在假设 file_content 等于:
<Buffer 50 4b 03 04 01 2b b4 52 >
在十进制中,这些字节值是:
<Buffer 80 75 3 4 1 43 180 82 >
这些是 8 个字节。我需要将它们转换成一个 int 数组,Int16Array 或 Int32Array。
在 Int16Array 的情况下。我期待以下值:
Int16Array(4) [20555, 772, 299, 46162]
对于 Int32Array 我期待:
Int32Array(2) [1347093252, 012bb452]
与上面的示例一样,我希望在转换为 Int16Array 时,这 8 个字节将被转换为仅 4 个 Int,因为每个 Int 占用两个字节。在 Int32Array 的情况下,我预计只有 2 个,因为每个应该占用 4 个字节。
但是,当我执行以下操作时:
var int16a = Int16Array.from(file_content);
var int32a = Int32Array.from(file_content);
console.log(int16a, int32a);
输出是:
Int16Array(8) [ 80, 75, 3, 4, 1, 43, 180, 82 ]
Int32Array(8) [ 80, 75, 3, 4, 1, 43, 180, 82 ]
这样在这两种情况下它都只向每个 Int 转换一个字节。
【问题讨论】:
-
那么你的问题是什么?构造类型化数组的代码在哪里?什么不起作用?
-
好的,我更新了我的问题。问题是,例如,当我执行 Int16Array.from(
) 时,它会从 Int 中的 Buffer 中返回每个字节,而不是实际上为每个(16 位)占用 2 个字节
标签: javascript binary