我认为表达问题的最佳方式是展示一个例子:
我有一个十六进制数字,比如2f
。我想取这个十六进制数,然后在第五位加一个'9',然后是零。所以在这种情况下我想要9002f
。从这里我将把它转换回十进制。
我认为最好的方法是使用列表并列出['9','0','0','0','0']
列表和['2','f']
列表,并以某种方式覆盖9000列表。
你们有什么想法?
答案 0 :(得分:7)
为什么要进行字符串操作?听起来你想用十六进制数来做数学运算:
h = '2f'
h_int = int(h, 16)
h_int += 0x90000
如果您确实需要获取字符串,则可以将其转换回字符串:
"%x" % h_int
答案 1 :(得分:0)
做你想做的事
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在答案中显示了更简单的数字基数转换方式。
答案 2 :(得分:0)
有趣的要求,但适用于变量位置:
>>> def place_n(a, b, pos):
return '{0}{1:0>{2}}'.format(a, b, pos - len(a))
>>> place_n('9', '2f', 5)
'9002f'