0

所以我想知道为什么这个Blob对象有size5 个:

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,但是,给了我预期的结果。

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

4

1 回答 1

2

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

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

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

var x = new Uint8Array([255, 10]);
new Blob([x])
//       ^ ^
于 2018-05-03T20:09:07.087 回答