我认为表达我的问题的最佳方式是举一个例子:
我有一个十六进制数字,比如说2f
。我想把这个十六进制数放在第五位,然后是零。所以在这种情况下我想要 9002f
. 从这里我将把它转换回十进制。
我在想最好的方法是使用列表并拥有一个列表['9','0','0','0','0']
和一个列表,['2','f']
并以某种方式覆盖到 9000 列表。
你们有什么感想?
为什么要进行字符串操作?听起来你想用十六进制数字做数学:
h = '2f'
h_int = int(h, 16)
h_int += 0x90000
如果您确实需要获取字符串,则可以将其转回字符串:
"%x" % h_int
做你想做的事
def fillhex(h, n, pos):
return n+h.zfill(pos-len(n))
.
fillhex('2f', '9', 5)
9002f
fillhex('4A', '9', 5)
9004A
fillhex('F', '9', 5)
9000F
尽管正如@NedBatchelder 在他的回答中显示的那样,有更简单的方法可以在数字基数之间进行转换。
有趣的要求,但这适用于可变位置:
>>> def place_n(a, b, pos):
return '{0}{1:0>{2}}'.format(a, b, pos - len(a))
>>> place_n('9', '2f', 5)
'9002f'