如何将十六进制表示的字节字符串转换为Uint8Array?
将JavaScript转义字节字符串转换为Uint8Array的方法
直接转换现有字符串
你的字符串中的转义序列都是单字节的\xXX格式,每个字符对应的Unicode码点与原始字节值一致,可以直接遍历字符串生成Uint8Array:
const s = "\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8bV23J15O4\xb14\xb1H61417KKLL\xb50L5U\x8a\x05\x00\xf6\xaa\x8e.\x1c\x00\x00\x00"; const uint8Array = new Uint8Array(s.length); for (let i = 0; i < s.length; i++) { uint8Array[i] = s.charCodeAt(i); }
更可靠的跨端方案(结合Python后端)
考虑到该字节流来自Python后端,推荐在Python端直接返回Base64编码后的字符串,再在JavaScript端解码转换,避免转义字符可能带来的编码问题:
Python端(调整输出)
import base64 raw_bytes = b'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x8bV23J15O4\xb14\xb1H61417KKLL\xb50L5U\x8a\x05\x00\xf6\xaa\x8e.\x1c\x00\x00\x00' encoded_str = base64.b64encode(raw_bytes).decode('utf-8') # 将encoded_str返回给前端
JavaScript端(处理Base64字符串)
// 假设从后端获取到的Base64字符串为encodedStr const binaryStr = atob(encodedStr); const uint8Array = new Uint8Array(binaryStr.length); for (let i = 0; i < binaryStr.length; i++) { uint8Array[i] = binaryStr.charCodeAt(i); }
内容的提问来源于stack exchange,提问作者Moshe Shaham
相关产品推荐
相关产品推荐

