1

hex(int('00000000', 2))バイナリ文字列を16進数に変換するために使用しています。

からのすべての(出力)値に対しては10正常に機能しますが、適切にFFパディング00されません。期待しているtoの代わりにtoが表示されます。090x00x90x000x09

私は何が間違っているのですか?

4

4 に答える 4

5

hex()可能な限り短い文字列を返します。

1つの代替手段は、単に次を使用することです。

"0x%02x" % int('00000000', 2)
于 2012-10-19T07:24:18.140 に答える
3

hex(0)なぜそれが戻るべきだと思います0x00か?0x0意味的に正しく、16進数の最短表現です0。これを考慮してください:あなたが小数ゼロを書くとき、それはそうではあり0ません00。または例えば0x9==== 。後者は、数値の自然な非冗長10進表現です。 0000999

于 2012-10-19T07:21:36.970 に答える
0

文字列フォーマットを使用して、値を16進数に変換します。

'0x{:02x}'.format(int('00000110', 2))
于 2012-10-19T07:29:25.783 に答える
0

0x9は、に等しい有効な16進数です0x09。メソッドは、hex追加するパディングの量を認識していません)

正規表現を使用してパディングを修正し、「0x9」から「0x09」を取得できます。

number = re.sub('x(\d)$','x0\1',number)
于 2012-10-19T07:27:28.870 に答える