从Uint8Array创建的Blob的大小给出了无意义的值

时间:2018-05-03 20:03:46

标签: javascript blob typed-arrays uint8array

所以我想知道为什么这个Blob对象的size为5:



var x = new Uint8Array(2);
x[0] = 255;
x[1] = 10;
console.log("Typed array length is " + x.length + ".")
console.log("Typed array byte length is " + x.byteLength + ".")
console.log("Blob size is " + new Blob(x).size + ' "bytes".')




对我来说没有意义,因为Uint8Array元素可以存储在一个字节中。 (Uint8Array项可以处理0到255之间的值。)

此外,更改x[0]x[1]似乎会更改new Blob(x).size。但是,x.byteLength会给我预期的结果。

即使我到处搜索过,我也找不到任何解释。

1 个答案:

答案 0 :(得分:1)

Blob constructor采用缓冲区数组,而不是单个缓冲区。您当前的代码与

相同
new Blob(["255", "10"])

这就是为什么你得到5的大小。你需要写

var x = new Uint8Array([255, 10]);
new Blob([x])
//       ^ ^