我似乎不了解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]);
创建数组时,只需反转字节的顺序即可,具体取决于您需要的是小端字节序还是大端字节序。