Python将大端十六进制地址转换为小端\x格式字节串报错如何解决?
报错原因
\x 是Python字符串的转义前缀,Python在解析字符串字面量阶段就会要求\x后面必须紧跟两位十六进制字符,你写的\x%s会被Python判定为非法转义序列,代码还没运行到字符串格式化步骤就会触发语法错误。
解决方法
根据你实际的使用场景选对应方案即可:
场景1:需要实际的字节类型数据(二进制操作、文件写入等场景推荐)
直接通过内置方法转换,比手动切字符串更可靠:
addr = "00401521" if len(addr) != 8: raise ValueError("Required the address as 00000000") # 先转整数再转小端4字节 addr = int(addr, 16).to_bytes(4, byteorder='little') print(addr) # 输出 b'!\x15@\x00',和你需要的\x21\x15\x40\x00完全一致,可直接用于二进制操作
场景2:需要带\x前缀的展示用字符串
如果只是要输出\x21\x15\x40\x00格式的文本内容,按下面的方式拼接即可:
addr = "00401521" if len(addr) != 8: raise ValueError("Required the address as 00000000") a, b, c, d = addr[:2], addr[2:4], addr[4:6], addr[6:] addr = f"\\x{d}\\x{c}\\x{b}\\x{a}" print(addr) # 直接输出 \x21\x15\x40\x00
内容的提问来源于stack exchange,提问作者tbhaxor
相关产品推荐
相关产品推荐

