hex(int('00000000', 2))
バイナリ文字列を16進数に変換するために使用しています。
からのすべての(出力)値に対しては10
正常に機能しますが、適切にFF
パディング00
されません。期待しているtoの代わりにtoが表示されます。09
0x0
0x9
0x00
0x09
私は何が間違っているのですか?
hex()
可能な限り短い文字列を返します。
1つの代替手段は、単に次を使用することです。
"0x%02x" % int('00000000', 2)
hex(0)
なぜそれが戻るべきだと思います0x00
か?0x0
意味的に正しく、16進数の最短表現です0
。これを考慮してください:あなたが小数ゼロを書くとき、それはそうではあり0
ません00
。または例えば0x9
==== 。後者は、数値の自然な非冗長10進表現です。 00009
9
9
文字列フォーマットを使用して、値を16進数に変換します。
'0x{:02x}'.format(int('00000110', 2))
0x9
は、に等しい有効な16進数です0x09
。メソッドは、hex
追加するパディングの量を認識していません)
正規表現を使用してパディングを修正し、「0x9」から「0x09」を取得できます。
number = re.sub('x(\d)$','x0\1',number)