【发布时间】:2019-01-17 13:28:12
【问题描述】:
我有一个通过 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();
【问题讨论】:
-
源“二进制格式”到底是什么?您将其描述为“文本”……我的意思是,UTF-8 可以描述为“二进制格式”,因为计算中的最终一切都涉及二进制数据。
-
@Pointy 我可以将其描述为“文本”的最佳方式是因为我真的不知道文本文件中可能包含什么,我唯一要做的就是返回“二进制格式” " 作为
Uint8Array、Uint16Array或Uint32Array。
标签: javascript arrays xmlhttprequest byte bytebuffer