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

标签 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).sizex.byteLength然而,给了我预期的结果。

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

最佳答案

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

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

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

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

关于javascript - 从 Uint8Array 创建的 Blob 的大小给出了无意义的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50163041/

相关文章:

php - 如何从 MySql 数据库中检索图像?

php - 在数据库中存储图像文件名,在服务器中存储实际文件与在数据库中存储图像数据并使用脚本加载图像。

java - ResultSet.getBlob() 在 ojdbc8 上非常慢

javascript - TypedArray 和 ArrayBuffers(node/chrome)上的 Object.freeze() 未按预期工作

javascript - JavaScript 中类型化数组的优点是它们在 C 中的工作方式相同还是相似?

javascript - 下拉对齐问题?

javascript - (jQuery) 为正则表达式列出定义的 CSS 类;使用特定的 CSS 来避免安全错误

javascript - 如何在 innerHTML 中获取点击事件?

javascript - 错误消息在简单的 javascript 表单验证中不起作用

javascript - Uint16Array 访问 byteOffset 1、3、5 等