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

Mic*_*rog 0 python replace binaryfiles python-3.x

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

为什么我不能用replace0x1122替换为 0x3344 ?

Sha*_*ger 7

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

data.replace(b'\x11\x22',b'\x33\x44').hex()
Run Code Online (Sandbox Code Playgroud)