何时使用Uint8Array,Uint16Array,Uint32Array

时间:2019-01-17 13:28:13

标签: javascript arrays xmlhttprequest byte bytebuffer

我有一个通过XMLHttpRequest加载用户文本并以二进制格式返回用户文本的应用程序。我知道8、16和32之间的主要区别是每个元素的字节数,但是我不知道何时使用每个元素。

例如,对于我的应用程序,由于文本文件实际上可能包含任何可能的字符,哪个最好?

我尝试了不同的文件,包括带有表情符号的文件,而且看来在Uint8Array中,表情符号占用了4个索引。

是否有我不应该仅使用Uint8Array的原因,还是有应在读取文件时动态选择的原因?我已经阅读了每个文档上的MDN文档,但是除了字节大小以外,它似乎没有提供其他很多见识。

这是我当前用于加载文件的代码:

asset= new XMLHttpRequest();

asset.addEventListener('readystatechange', function load() {

    if (asset.readyState == 4 && asset.data.status == 200) {

        const arrayBuffer = asset.data.response;

        if (arrayBuffer) asset.data = new Uint8Array(arrayBuffer);

    }

}.bind(this), false);

// Error handling.

asset.responseType = 'arraybuffer';

asset.open('GET', asset.src);

asset.send();

1 个答案:

答案 0 :(得分:1)

这完全取决于您要向其中发送的数据类型。 8位适用于ASCII字符等。 16位用于UCS-2。 32位用于UTF-32,您不必使用它,因为它用于边缘情况。 Windows几乎没有这种用法,Unix有时仅在内部应用程序中使用它。