2013-02-03 25 views
46

10進数を16進数に変換するにはどうすればよいですか?Pythonの16進数

入力:255出力:ff

入力:2出力:02

私はhex(int)[2:]を試みたが、最初の例ではなく、二番目に表示されていることと思われます。

+0

[あなたは試してみましたか?](http://whathaveyoutried.com)私はこの質問をd​​ownvoted理由:http://meta.stackexchange.com/a/149138/133242 –

+0

私はhex(int)[2 :]しかし、最初の例は表示されますが、2番目の例は表示されないようです。 –

+0

私はそれを手に入れました!ありがとう –

答えて

104

'02x'フォーマットのformat() functionを使用してください。

>>> format(255, '02x') 
'ff' 
>>> format(2, '02x') 
'02' 

02部分はxは小文字の16進数を意味し、少なくとも2桁の数字を使用し、長さのパッドにそれをゼロを使用するformat()を伝えます。

Format Specification Mini Languageはまた、大文字の六角出力用X与え、あなたは(あなたがxXフォーマッタなどを使用天気をによって異なります)0xまたは0X接頭辞を含めること#でフィールド幅の前に付けることができます。

>>> format(255, '02X') 
'FF' 
>>> format(255, '#04x') 
'0xff' 
>>> format(255, '#04X') 
'0XFF' 
+0

ありがとう!良い説明。 –

+0

大文字の16進数の出力を使用するようにフォーマットを設定すると、16進数の接頭辞に大文字の "X"が付きます。これはあなたの例ではそうではないようです。これは私のローカルバージョンのPythonの問題ですか?私はバージョン2.7.9を使用しています。 – jwp36

+0

@ jwp36:いいえ、私の答えは間違っていましたが、修正されました。謝罪いたします。 –

15

を私は、これはあなたが欲しいものだと思う:ちょうどあなたがそれらの余分2つの文字を可能にするために、フィールドの幅を調整する必要があることを考慮に入れる

>>> def twoDigitHex(number): 
...  return '%02x' % number 
... 
>>> twoDigitHex(2) 
'02' 
>>> twoDigitHex(255) 
'ff' 
-7

最初の答えは最高ですが、私は古風な答えを持っていますが、機能

>>> "".join(list(hex(255))[2:]) 
'ff' 
+2

別の回答と同じように、これはゼロパッドではありません。例えば、 '' ".join(list(hex(2))[2:])'は '' 02 ''ではなく '' 2 ''と評価されます。 – therealrootuser

+1

これは、質問の 'hex(int)[2:]'と同義です。なぜあなたは再びそれに参加するだけのリストを作るのですか? – wjandrea

+0

あなたはすでに良いことがあることに同意すれば、なぜこの回答を投稿しますか? – ryry1985