javascript - 如何在 arraybuffer 中存储 32 位整数?

标签 javascript uint8array

我似乎不理解 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/

相关文章:

javascript - ios、safari 设备上的 Bootstrap popover 对齐问题

javascript - Canvas html 标签

javascript - 将 int16 数组转换为 float

http - Flutter consolidateHttpClientResponseBytes未定义错误?

javascript - Firefox 和 Chromium 之间的 Uint8Array 到字符串转换差异

javascript - 至少包含 1 个数字和 1 个字符且固定长度为 11 的字母数字字符串的正则表达式

JavaScript - IE 9 XML 文本内容

javascript - 返回到之前工作的组件会出现白页

swift - [UInt8] 的下标范围 - Swift

ios - 在 swift 4 中修改 [UInt8] 字节数组的最佳方法是什么?