首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Uint8Array到ArrayBuffer

Uint8Array到ArrayBuffer
EN

Stack Overflow用户
提问于 2016-05-14 23:08:57
回答 4查看 38.8K关注 0票数 40

因此,我有一个ArrayBuffer,它是我用新的HTML5文件读取器读取的文件内容的ArrayBuffer(),我可以通过执行以下操作将ArrayBuffer转换为Uint8Array。

代码语言:javascript
复制
//ab = established and defined ArrayBuffer

var foobar = new Uint8Array([ab]);

//var reversed = reverseUint8Array(foobar); 

//reversed should equal ab 

如何将最后一个过程重新转换为ab?

下面是我在解密后得到的输出:http://prntscr.com/b3zlxr

这是一种什么样的格式,如何将其转换为blob?

EN

回答 4

Stack Overflow用户

发布于 2017-06-29 00:05:18

我找到了一种更简单的方法来获取Uint8Array的ArrayBuffer。

代码语言:javascript
复制
var arrayBuffer = foobar.buffer; 

就是这个!这对我来说很有效!

票数 57
EN

Stack Overflow用户

发布于 2019-02-12 17:34:17

使用kuokongqingyun选项,它并不总是有效的,因为缓冲区可能比数据视图大。

请参阅此示例:

代码语言:javascript
复制
let data = Uint8Array.from([1,2,3,4])
var foobar = data.subarray(0,2)
var arrayBuffer = foobar.buffer; 

console.log(new Uint8Array(arrayBuffer)) // will print [1,2,3,4] but we want [1,2]

在使用array.buffer时,使用byteOffsetbyteLength计算实际数据是很重要的

代码语言:javascript
复制
let data = Uint8Array.from([1,2,3,4])
var foobar = data.subarray(0,2)
var arrayBuffer = foobar.buffer.slice(foobar.byteOffset, foobar.byteLength + foobar.byteOffset); 

console.log(new Uint8Array(arrayBuffer)) // OK it now prints [1,2]

下面是你需要的函数:

代码语言:javascript
复制
function typedArrayToBuffer(array: Uint8Array): ArrayBuffer {
    return array.buffer.slice(array.byteOffset, array.byteLength + array.byteOffset)
}
票数 45
EN

Stack Overflow用户

发布于 2016-05-14 23:24:37

如果您需要将其转换回ArrayBuffer(),则需要手动添加每个值。

这意味着,您需要逐个遍历其中的每一个。

可能最快的方法是这样:

代码语言:javascript
复制
var buffer = new ArrayBuffer(foobar.length);

foobar.map(function(value, i){buffer[i] = value});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37228285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档