首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型转换-解码ArrayBuffer

类型转换-解码ArrayBuffer
EN

Stack Overflow用户
提问于 2021-12-15 11:56:09
回答 1查看 643关注 0票数 1

我通过蓝牙连接了一个脉搏血氧计。在角web蓝牙https://github.com/manekinekko/angular-web-bluetooth之后,我调用value ()方法。我有一个答案:

代码语言:javascript
复制
DataView(7)
buffer: ArrayBuffer(7)
byteLength: 7
[[Prototype]]: ArrayBuffer
[[Int8Array]]: Int8Array(7)
0: 86
1: 84
2: 77
3: 32
4: 50
5: 48
6: 70
buffer: 
ArrayBuffer(7)
byteLength: 7
byteOffset: 0
length: 7
Symbol(Symbol.toStringTag): (…)
[[Prototype]]: TypedArray
[[Uint8Array]]: Uint8Array(7)
0: 86
1: 84
2: 77
3: 32
4: 50
5: 48
6: 70
buffer: 
ArrayBuffer(7)
byteLength: 7
byteOffset: 0
length: 7
Symbol(Symbol.toStringTag): (…)
[[Prototype]]: TypedArray
[[ArrayBufferByteLength]]: 7
[[ArrayBufferData]]: 144
byteLength: 7
byteOffset: 0

如何将ArrayBuffer解码为可读的值格式?

EN

回答 1

Stack Overflow用户

发布于 2021-12-15 18:46:34

您的DataView的底层ArrayBuffer值可以用TypedArrays读取:

代码语言:javascript
复制
new Uint8Array(dataView.buffer).toString()

不能直接读取或写入ArrayBuffers。为此使用了一个“视图”接口,例如类型化数组视图DataView

代码语言:javascript
复制
const buffer = new ArrayBuffer(5)
const decoder = new TextDecoder()

// Set byte array (8 bits per item) with ASCII number code of character
const bytes = new Uint8Array(buffer)
Array.from('hello').forEach((c, i) => bytes[i] = c.charCodeAt(0))
console.log(bytes.toString(), decoder.decode(buffer))

// Use DataView to set new values
const view = new DataView(buffer)
Array.from('apple').forEach((c, i) => view.setUint8(i, c.charCodeAt(0)))
console.log(bytes.toString(), decoder.decode(buffer))

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70363290

复制
相关文章

相似问题

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