不能用python替换十六进制字节

问题描述

>>> data=b'\x11\x22'
>>> data.hex()
'1122'
>>> len(data)
2
#let's try to replace data ....
>>> data.replace(b'1122',b'3344').hex()
'1122'

为什么我不能用 replace 0x1122 到 0x3344 替换?

解决方法

因为您的 bytes 不包含 1122(代表 '1''1''2''2' 的四个离散 ASCII 值),它包含 \x11\x22(两个离散的原始字节编码,0x110x22)。如果要替换原始字节值,请提供它们以进行替换,例如

data.replace(b'\x11\x22',b'\x33\x44').hex()