如何在Python中逐字节修改十六进制字符串?

时间:2019-04-09 09:10:33

标签: python hex

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

我在Python方面没有太多经验,而且对于如何解决该问题我确实没有任何线索

1 个答案:

答案 0 :(得分:0)

如果将相同的规则应用于十六进制数字的每个块,则可以使用以下规则。

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