Python如何将十六进制字符串转换为逆序\x格式的字节串
问题原因
你之前尝试拼接\x的写法报错,是因为\x是Python字符串字面量的语法级转义前缀,仅在代码解析阶段生效,不是可以在运行时动态拼接的普通字符串片段,直接写"\x"+xx会被解析为不合法的不完整转义序列,直接触发语法错误。
实现方法
你的需求本质是两步操作:先将十六进制字符串按每两位一组转成字节,再倒转字节顺序。Python内置的bytes.fromhex方法可以直接处理十六进制字符串转字节,不需要手动拼接转义符:
# 输入的原始十六进制字符串 origin_hex = '3918f33a' # 转成原始字节序列,得到 b'\x39\x18\xf3\x3a' raw_bytes = bytes.fromhex(origin_hex) # 倒序字节,得到你需要的 b'\x3a\xf3\x18\x39' target_bytes = raw_bytes[::-1] # 如果需要转成字符串格式,用单字节的latin-1编码即可保证一一对应 output = target_bytes.decode('latin-1') print(output)
运行上述代码print(output)就会输出你需要的ó▒9结果。
注:直接打印target_bytes时你会看到输出为b':\xf3\x189',这是Python的优化显示逻辑:可打印的ASCII字符会直接显示原文,\x3a对应可打印的冒号:,\x39对应可打印的9,和你需要的\x3a\xf3\x18\x39完全等价,没有区别。
内容的提问来源于stack exchange,提问作者Qifan Guo
相关产品推荐
相关产品推荐

