Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将读取为二进制字符串的文件转换为Uint8Array,而不提供与使用ArrayBuffer时相同的值?_Javascript - Fatal编程技术网

Javascript 如何将读取为二进制字符串的文件转换为Uint8Array,而不提供与使用ArrayBuffer时相同的值?

Javascript 如何将读取为二进制字符串的文件转换为Uint8Array,而不提供与使用ArrayBuffer时相同的值?,javascript,Javascript,我试图读取一个类似二进制字符串的文件,并将其转换为UInt8Array进行处理(我使用一个使用这种格式的库进行操作),但是我使用其他库进行处理时使用原始字符串数据。因此,我需要通过以下方式之一读取数据: 作为二进制字符串 作为数组缓冲区 并在将数据传递给使用其他数据类型的库时将其转换为其他类型。当我将数据作为数组缓冲区读取并将其值传递给库A时,它工作得非常好。但是,如果我将数据读取为二进制字符串,并尝试将其转换为UInt8Array,如下所示: const enc = new TextEnc

我试图读取一个类似二进制字符串的文件,并将其转换为UInt8Array进行处理(我使用一个使用这种格式的库进行操作),但是我使用其他库进行处理时使用原始字符串数据。因此,我需要通过以下方式之一读取数据:

  • 作为二进制字符串
  • 作为数组缓冲区
并在将数据传递给使用其他数据类型的库时将其转换为其他类型。当我将数据作为数组缓冲区读取并将其值传递给库A时,它工作得非常好。但是,如果我将数据读取为二进制字符串,并尝试将其转换为UInt8Array,如下所示:

const enc = new TextEncoder();
fileContent = enc.encode(fileContent);
库A未正确处理数据

当我查看作为ArrayBuffer直接读取文件时创建的UInt8Array视图时,我看到它的长度是65385字节。然而,当我像二进制字符串一样读取文件并像上面的代码片段那样转换它时,我得到了一个长度为96074字节的UInt8Array。所以,我一定是做错了什么,但找不到确切的原因。将二进制字符串转换为二进制字符串的正确方法是什么
ArrayBuffer。

为什么要对二进制数据使用TextEncoder?对我来说似乎没有意义-还有,正确的长度是多少?正确的长度是65385所以,显然使用TextEncoder不是正确的策略-所以,你有一个ArrayBuffer,你想要一个UInt8Array?你到底把“二进制字符串”称为什么?记住,TextEncoder编码为UTF-8。