gpt4 book ai didi

Javascript 如何使用纯二进制数据创建和使用 blob

转载 作者:行者123 更新时间:2023-12-02 04:53:17 27 4
gpt4 key购买 nike

我有一个纯 Uint8Array 我想保存到一个 blob 中
我可以使用任何类型(“文本/纯文本”、应用程序/八位字节流等)创建 blob ..

var a_blob = new Blob(Uint8Array,{type: whatever});

后来测试结果我有:
this.read_blob = function (blob)  {
var reader = new FileReader();
reader.onloadend = function (evt)
{ var full_buffer = evt.target.result; }
reader.readAsArrayBuffer(blob);
}

我已经存储了 1 219 2 0 个值(使用 Uint32Array 的 4 个值)并且我检查了一切都正确。

现在,我有:(我想检查 blob 值)
var data  = new Uint32Array (full_buffer,0,4);

我有 :
0: 808464433
1:809054514
2:808464432
3:808464432
????????????

如果我使用:
var data  = new Uint8Array (full_buffer,0,4);

我有 :
[49,48,48,48,50,49,57,48,48,...] 是 1 0 0 0 2 1 9 0 ....
(我的值(value)观的字符串表示......)

我在做什么坏事?
也许 blob 并没有真正保存为纯二进制数据?
fullbuffer 是二进制字符串对象吗?
我必须使用特定类型吗?
我是否以不同的方式读取缓冲区?
必须在循环中创建一个关联 full_buffer 单个数据的 Uint8Array 吗?

最佳答案

已解决

MDN解释:要创建一个 blob,你必须使用

blob = new Blob(part,type);
part = 要放入新 Blob 对象的数据对象数组。

所以解决方法(不容易发现,因为自己正在看到一个又一个的时间数组,bufferarray,typedarrays...。你感到困惑)是使用 [] 括号动态创建一个元素数组。

所以而不是:

var a_blob = new Blob(Uint8Array,{type: whatever});


var a_blob = new Blob([Uint8Array],{type: whatever});

相信我,经过大量网络搜索后,您可以看到帖子,其中可以看到带括号和不带括号的 blob 创建

关于Javascript 如何使用纯二进制数据创建和使用 blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25785682/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com