首页 > 解决方案 > 如何在 Python 中逐字节修改十六进制字符串?

问题描述

我正在编写一小段代码来交换 .bmp 和 .wav 文件之间的标题。我设法提取原始字节(例如\x00\x12)并将其转换为字符串(0012),但我现在想要做的是拆分字符串,以便我可以将其修改为两个字节乘两个字节。这意味着我有我的十六进制字符串,例如FACB3D52,我希望它被拆分,FACB以便我可以在其中应用规则(如果有 A,则替换为 B),然后它向前移动3D52,应用相同的规则, 并重新组装字符串以使其输出FBCB3D52

我在 Python 方面没有太多经验,我真的不知道应该如何解决这个问题

标签: pythonhex

解决方案


如果您对十六进制数的每个块应用相同的规则,则可以使用以下内容。

hexstr = "FACB3D52"

hexlist = [hexstr[i:i+4] for i in range(len(hexstr)//4)] # Split into list of substrings
new_hexlist = [substr.replace('A', 'B') for substr in hexlist] # Apply rule to each substring
new_hexstr = ''.join(new_hexlist) # Join substrings back to form final string

print(new_hexstr)

输出

FBCBBCB3


推荐阅读