我似乎不理解 Uint32Array
。根据我对 Uint8Array
的了解,我可以在数组 (Uint8Array([16])
或 Uint8Array([96, 56])
) 结果就是这样。但是,当我对更大的数字(如 Uint32Array([21640])
尝试同样的事情时,它似乎被 chop 了。 21640 应该等于 5488(十六进制),但我只得到 88。这实际上是如何工作的?
编辑:阐述
我还尝试将多个 ArrayBuffer 连接在一起。如果我没记错的话,readAsArrayBuffer
会生成一个 Uint8Array
,我正尝试使用 https://gist.github.com/72lions/4528834 向其附加一些 32 位数字。
关于 Uint8Array
的信息和示例太多,而关于 Uint32Array
的信息和示例让我觉得这 32 个中的一个会存储一个值,就好像它是 4 8.
最佳答案
无符号 8 位数字的最大值为 255。根据 os/cpu 的不同,较大的数字将被 chop 或翻转。如果您想将 32 位数字转换为 8 位数组,请尝试这样的操作。
var number = 21640;
var byte1 = 0xff & number;
var byte2 = 0xff & (number >> 8);
var byte3 = 0xff & (number >> 16);
var byte4 = 0xff & (number >> 24);
var arr1 = Uint8Array([byte1,byte2,byte3,byte4]);
根据需要小端还是大端,在创建数组时只需反转字节的顺序即可。
关于javascript - 如何在 arraybuffer 中存储 32 位整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58287648/