我有Uint8Array实例,其中包含某些文件的二进制数据 我想将数据发送到服务器,在那里它将被反序列化为byte [] 但是,如果我发送Uint8Array,我有反序列化错误。
所以,我想将它转换为Array,因为Array很好地反序列化 我这样做:
function uint8ArrayToArray(uint8Array) {
var array = [];
for (var i = 0; i < uint8Array.byteLength; i++) {
array[i] = uint8Array[i];
}
return array;
}
此功能正常,但对大文件效率不高。
问题:是否有更有效的方法来转换Uint8Array - &gt;阵列吗
答案 0 :(得分:47)
您可以在已支持Array.from
的环境中使用var array = Array.from(uint8Array)
(ES6),如果不支持,您可以使用var array = [].slice.call(uint8Array)
答案 1 :(得分:0)
有一种使用原型的Uint8Array方法(但只有Firefox和Chrome支持):
TypedArray.prototype.entries() - &gt;它返回一个数组。
检查出来: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/entries