我通过创建一个数组缓冲区
var uni = new Uint8Array([255, 216, 255, 0, 0, 0, 0, 0])
但是当我尝试使用map取回字节时
uni.map(byte => byte.toString(16))
它返回
Uint8Array(8) [0, 0, 0, 0, 0, 0, 0, 0]
答案 0 :(得分:4)
您必须先将TypedArray
转换为Array
:
Array.prototype.slice.call(uni).map(byte=>byte.toString(16))
答案 1 :(得分:2)
Uint8Array
只能包含8位无符号整数(0到255之间的整数)。当您使用Uint8Array.protoype.map()
方法尝试将每个元素转换为字符串时,它们会超出[0,255]范围,并设置为0。
如果要将其转换为字符串,请首先将Uint8Array
转换为普通的Array
,然后使用Array.prototype.map()
:
const array = Array.from(uni)
array.map(byte => byte.toString(16))