在Python中递增十六进制字符串

3
我正在尝试使用Python递增表示为字符串的十六进制值,例如'84B8042100FE',如何将该值增加1以得到'84B8042100FF'?谢谢。
2个回答

4
>>> s = '84B8042100FE'
>>> num = int(s, 16) + 1
>>> hex(num)[2:].upper()
'84B8042100FF'

还有一种更好的方法,我经常忘记 - 感谢@Martijn Pieters

>>> '{:X}'.format(num)
'84B8042100FF'

在数字过大的情况下,最后还应该加上 .rstrip("L") - Tim

2
In [15]: '{:X}'.format(int('84B8042100FE', 16)+1)
Out[15]: '84B8042100FF'

Jon的解决方案很好用,但当我尝试你的解决方案时,出现了ValueError: zero length field name in format错误。 - Ismail
@Ismail 这是针对Python 2.7的,如果你使用2.6,你需要{0:X} - iabdalkader

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接