Python中如何将特定格式字符串转换为目标bytearray?
解决方案
要得到目标bytearray(b'\x14\x12\x13\x11\x69'),核心是把字符串开头的x14转换成字节0x14,同时保留后续转义字符对应的原始字节值。具体实现如下:
var = "x14\x12\x13\x11\x69" # 提取开头的十六进制数字(去掉前缀'x') start_hex = var[1:3] # 将剩余每个字符转为两位十六进制字符串 remaining_hex = ''.join(f"{ord(c):02x}" for c in var[3:]) # 拼接完整十六进制串并转换为bytearray result = bytearray.fromhex(start_hex + remaining_hex) # 验证结果 print(result) # 输出 bytearray(b'\x14\x12\x13\x11i') print(result == bytearray(b'\x14\x12\x13\x11\x69')) # 输出 True
关键说明
- Python打印
bytearray时,会将可打印ASCII字符(如0x69对应字符i)直接显示为字符,而非十六进制转义序列,但字节值与目标完全一致,通过==比较可验证。 - 你之前的方法错误在于:
- 直接用
bytearray(var, 'utf-8')会把x、1、4作为普通字符编码成对应字节(0x78、0x31、0x34),而非转换成0x14。 bytearray.fromhex(var.encode().hex())是把整个字符串的UTF-8编码字节转成十六进制再还原,自然会包含x、1、4的编码字节,不符合需求。
- 直接用
内容的提问来源于stack exchange,提问作者Nene Tetteh Wayo Akwetteh
相关产品推荐
相关产品推荐

