无法用 python 替换字节中的十六进制
Can't replace hex in bytes with 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
(两个离散的原始字节编码,0x11
、0x22
)。如果要替换原始字节值,请提供它们以进行替换,例如
data.replace(b'\x11\x22',b'\x33\x44').hex()
>>> 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
(两个离散的原始字节编码,0x11
、0x22
)。如果要替换原始字节值,请提供它们以进行替换,例如
data.replace(b'\x11\x22',b'\x33\x44').hex()