gpt4 book ai didi

javascript - Uint8Array 较大数组缓冲区的无效类型化数组长度

转载 作者:行者123 更新时间:2023-12-05 07:29:04 25 4
gpt4 key购买 nike

我正在通过以下方式将文件作为数组缓冲区读取:

reader.readAsArrayBuffer(myFile);

然后我使用该数组缓冲区并尝试通过以下方式创建 Uint8Array:

reader.onload = e => {
let arrayBuffer = new Uint8Array(e.target.result, 0,
e.target.result.byteLength);

我也试过:

let arrayBuffer = new Uint8Array(e.target.result);

在这两种情况下,当我上传一个字节长度为 198873088 的文件时,它工作正常。但是,当我尝试更大的文件 1564725248 时,我在第一种情况下得到以下信息:

Invalid typed array length: 1564725248

在第二种情况下:

Invalid typed array length: undefined

我认为上限是 2^32 - 1,即 42949672995,谁能解释为什么长度有问题?

最佳答案

在最新的 Chrome 版本 71.0.3578.98(正式版)(64 位)中,我得到以下结果。在空白页面上硬重新加载后执行的每个测试。

a=new Uint8Array(256*256*256*128) // Triggers Uncaught RangeError: Invalid typed array length: 2147483648
a=new Uint8Array(256*256*256*127) // Works, array length 2130706432

然而,更有趣的是,我可以触发“Aw, Snap”而不会出现异常。 :

a=new Uint8Array(256*256*256*127 + 64) // Doesn't work, triggers "Aw, Snap!" page

关于javascript - Uint8Array 较大数组缓冲区的无效类型化数组长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52956115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com