gpt4 book ai didi

javascript - 为什么我的 JavaScript toHexString 函数不能与 Uint8Array 一起正常工作?

转载 作者:行者123 更新时间:2023-11-29 10:36:44 25 4
gpt4 key购买 nike

这是我的 toHexString 函数:

function toHexString(bytes) {
return bytes.map(function (byte) {
return ("00" + (byte & 0xFF).toString(16)).slice(-2)
}).join('')
}

这就是我在 Chrome 控制台中所做的:

> var bitmapArray = new Uint8Array(buffer);

undefined

> toHexString(bitmapArray.subarray(0,3))

"2100"

> bitmapArray.subarray(0,3)

[33, 29, 31]

> toHexString([33,29,31])

"211d1f"

toHexString 函数似乎无法正常工作。有什么问题?

最佳答案

map method of typed arrays返回另一个相同类型的类型化数组。这会将您的字符串 "21""1d""1f" 转换为字节,方法是将它们解释为十进制整数 - 后者两个不是,所以 NaN 变为 0 并且您最终得到 Uint8Array([21, 0, 0])

要解决此问题,请使用可以包含字符串的普通 Array:

toHexString(Array.from(bitmapArray.subarray(0,3)))

或者可能更好

function toHexString(bytes) {
return Array.from(bytes, byte =>
("00" + (byte & 0xFF).toString(16)).slice(-2)
).join('');
}

关于javascript - 为什么我的 JavaScript toHexString 函数不能与 Uint8Array 一起正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35342469/

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