Когда использовать Uint8Array, Uint16Array, Uint32Array - PullRequest
0 голосов
/ 17 января 2019

У меня есть приложение, которое загружает текст пользователя через XMLHttpRequest и возвращает его в двоичном формате. Я понимаю, что основное различие между 8, 16 и 32 - это количество байтов на элемент, но я не знаю, когда их использовать.

Например, для моего приложения, поскольку текстовый файл может содержать любые возможные символы, какой из них будет лучшим?

Я пробовал разные файлы, в том числе тот, в котором были эмодзи, и казалось, что в массиве Uint8 эмодзи занимало 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 голосов
/ 17 января 2019

Все зависит от того, какой тип данных вы отправляете в него. 8 бит хорошо подходит для символов ASCII и т.п. 16 бит для UCS-2. 32-битный для UTF-32, который вы не обязательно использовать, потому что это больше для крайних случаев. Windows практически не использует его, а Unix иногда использует его только во внутренних приложениях.

...