所以我想知道为什么这个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
会给我预期的结果。
即使我到处搜索过,我也找不到任何解释。
答案 0 :(得分:1)
Blob
constructor采用缓冲区数组,而不是单个缓冲区。您当前的代码与
new Blob(["255", "10"])
这就是为什么你得到5
的大小。你需要写
var x = new Uint8Array([255, 10]);
new Blob([x])
// ^ ^