1

我认为表达我的问题的最佳方式是举一个例子:

我有一个十六进制数字,比如说2f。我想把这个十六进制数放在第五位,然后是零。所以在这种情况下我想要 9002f. 从这里我将把它转换回十进制。

我在想最好的方法是使用列表并拥有一个列表['9','0','0','0','0']和一个列表,['2','f']并以某种方式覆盖到 9000 列表。

你们有什么感想?

4

3 回答 3

7

为什么要进行字符串操作?听起来你想用十六进制数字做数学:

h = '2f'
h_int = int(h, 16)
h_int += 0x90000

如果您确实需要获取字符串,则可以将其转回字符串:

"%x" % h_int
于 2012-06-29T00:58:49.137 回答
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 在他的回答中显示的那样,有更简单的方法可以在数字基数之间进行转换。

于 2012-06-29T01:02:56.437 回答
0

有趣的要求,但这适用于可变位置:

>>> def place_n(a, b, pos):
    return '{0}{1:0>{2}}'.format(a, b, pos - len(a))

>>> place_n('9', '2f', 5)
'9002f'
于 2012-06-29T01:06:37.983 回答