我似乎不了解Uint32Array。根据我对Uint8Array的了解,我可以将其提供给数组(Uint8Array([16])Uint8Array([96,56]))中的一个数字,其结果就是这样。但是,当我尝试对更大的数字(如Uint32Array([21640]))使用相同的东西时,似乎会截断它。 21640应该等于5488的十六进制数,我只能得到88。这实际上如何工作?

编辑:阐述

我也试图将多个ArrayBuffer连接在一起。如果我没记错的话,readAsArrayBuffer会生成一个Uint8Array,我正在尝试使用https://gist.github.com/72lions/4528834将其附加到某些32位数字上

关于Uint8Array的信息和示例太多,而Uint32Array的信息很少,使我认为这32个值中的一个会存储一个值,好像它是8个值中的4个一样。

最佳答案

无符号的8位数字的最大值是255。根据os / cpu,更大的数字将被截断或翻转。如果要在8位数组中转换32位数字,请尝试如下操作。

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]);


创建数组时,只需反转字节的顺序即可,具体取决于您需要的是小端字节序还是大端字节序。

07-28 02:24
查看更多