首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript快速读取本地文件到UInt8Array

Javascript快速读取本地文件到UInt8Array
EN

Stack Overflow用户
提问于 2017-09-21 07:42:45
回答 2查看 10.1K关注 0票数 2

如何快速读取本地二进制文件到UInt8Array。以下代码

代码语言:javascript
复制
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;在不到1秒的时间内执行,同时这一部分

代码语言:javascript
复制
var resultArray = new Uint8Array(text.length);
for(var i = 0; i < text.length;i++){
    resultArray[i] = (text[i].charCodeAt() & 255) & 255;
}

对于50 Is的二进制文件,大约需要10秒的时间,有没有一种更快地将二进制文件读取到UInt8Array的方法?

EN

回答 2

Stack Overflow用户

发布于 2017-09-21 07:56:32

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

代码语言:javascript
复制
req.responseType = "arraybuffer";
let buffer = req.response;
let u = new Uint8Array(buffer);
票数 3
EN

Stack Overflow用户

发布于 2017-09-21 07:48:24

您可以使用TextEncoder!TextEncoder以代码点流作为输入,并发出字节流。

以下是您的新代码:)

代码语言:javascript
复制
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 encoder = new TextEncoder("utf-8");
    var resultArray = encoder.encode(text);
    return resultArray.buffer;
 }

看看那是怎么回事,应该快得多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46338176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档