javascript - 如何在数组缓冲区中存储 32 位整数?
问题描述
好像没看懂Uint32Array
。根据我所读到的内容,Uint8Array
我可以在数组(Uint8Array([16])
或Uint8Array([96,56])
)中输入一个数字,结果就是这样。但是,当我对更大的数字(如 )尝试相同的操作时Uint32Array([21640])
,它似乎会截断它。21640 应该等于十六进制的 5488,我只得到 88。这实际上是如何工作的?
编辑:阐述
我也试图将几个 ArrayBuffers 连接在一起。如果我没记错readAsArrayBuffer
的话,我会尝试使用https://gist.github.com/72lions/4528834Uint8Array
附加一些 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]);
创建数组时只需颠倒字节顺序,具体取决于您想要小端还是大端。
推荐阅读
- node.js - 如何为猫鼬中的字段填充数据,其中引用是模型中的嵌套数组?
- flutter - 如何在颤动中将Either的右侧转换为泛型类型
- azure-data-factory - 如何在 Azure 数据工厂中转换数据类型
- ifc - 国际金融公司:IfcReinforcingBar 示例
- crystal-reports - Crystal Reports 调度失败,格式为 Crystal
- mysql - SQL 测试:外部加入 prod tbl 和 compOrder tbls。显示 id & prodname frm product tbl, display id & totAmt fr compOrder tbl where both tbl id<10
- reactjs - 将回调函数传递给 react-admin 资源
- colors - 有没有一种简单的方法可以在 Superset 中反转配色方案
- cors - 我什么时候需要 CORS?
- amazon-iam - 尝试调用 AssumeRoleWithSAML 时 base64 SAMLResponse 无效