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

Size of Blob created from Uint8Array gives nonsense values

所以我想知道为什么这个 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).sizex.byteLength,然而,给了我预期的结果。

尽管我到处搜索,但我找不到任何解释。

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

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

这就是为什么您得到 5 尺寸的原因。你需要写

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