gpt4 book ai didi

Javascript 快速读取本地文件到 UInt8Array

转载 作者:行者123 更新时间:2023-11-30 15:02:15 25 4
gpt4 key购买 nike

如何快速读取本地二进制文件到 UInt8Array。在下面的代码中

function readAllBytesAsUInt8Array(path) {
var req = new XMLHttpRequest();
req.open("GET", path, false);
req.overrideMimeType("text/plain; charset=binary-data");
req.send(null);
if (req.status !== 200) {
console.log("error");
return null;
}
var text = req.responseText;
var resultArray = new Uint8Array(text.length);
for(var i = 0; i < text.length;i++){
resultArray[i] = (text[i].charCodeAt() & 255) & 255;
}
return resultArray.buffer;
}

var text = req.responseText; 执行不到一秒,同时这部分

var resultArray = new Uint8Array(text.length);
for(var i = 0; i < text.length;i++){
resultArray[i] = (text[i].charCodeAt() & 255) & 255;
}

50MB 的二进制文件大约需要 10 秒,有没有办法更快地将二进制文件读取到 UInt8Array?

最佳答案

可以将XMLHttpRequest().responseType设置为"arraybuffer",然后将ArrayBuffer实例传给新的 Uint8Array()。或者,您可以在 Worker 中使用 fetch()Response.arrayBuffer()FileReaderSync() 来传输ArrayBuffer 到主线程而不复制 ArrayBuffer

req.responseType = "arraybuffer";
let buffer = req.response;
let u = new Uint8Array(buffer);

关于Javascript 快速读取本地文件到 UInt8Array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46338176/

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