从 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).size
。 x.byteLength
,然而,给了我预期的结果。
尽管我到处搜索,但我找不到任何解释。
Blob
constructor 采用缓冲区数组,而不是单个缓冲区。您当前的代码与
相同
new Blob(["255", "10"])
这就是为什么您得到 5
尺寸的原因。你需要写
var x = new Uint8Array([255, 10]);
new Blob([x])
// ^ ^
所以我想知道为什么这个 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
,然而,给了我预期的结果。
尽管我到处搜索,但我找不到任何解释。
Blob
constructor 采用缓冲区数组,而不是单个缓冲区。您当前的代码与
new Blob(["255", "10"])
这就是为什么您得到 5
尺寸的原因。你需要写
var x = new Uint8Array([255, 10]);
new Blob([x])
// ^ ^