我通过
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]
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))
你必须先将TypedArray
转换为Array
:Array.prototype.slice.call(uni).map(byte=>byte.toString(16))