私の質問を表現する最良の方法は、例を示すことだと思います。
私は16進数を持っています、と言い2f
ます。この16進数を取得し、5番目に「9」を付けてから0を付けます。したがって、この場合は 9002f
。ここから、これを10進数に変換し直します。
私はこれを行うための最良の方法は、リストを使用し、リストと9000リスト['9','0','0','0','0']
のリストを作成['2','f']
し、何らかの方法で9000リストに上書きすることです。
皆さんはどう思いますか?
なぜ文字列操作を行うのですか?16進数で数学をやりたいようです。
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'