web-dev-qa-db-ja.com

16進値を出力するときに大文字を使用するようにPythonを取得するにはどうすればよいですか?

Python v2.6では、次の2つの方法のいずれかで整数の16進数を取得できます。

print(("0x%x")%value)
print(hex(value))

ただし、どちらの場合も、16進数は小文字です。これらを大文字にするにはどうすればよいですか?

17
WilliamKF

Capital X(Python 2および3使用 sprintfスタイルのフォーマット ):

print("0x%X" % value)

またはpython 3+(using .format文字列構文 ):

print("0x{:X}".format(value))

またはpython 3.6 +( フォーマットされた文字列リテラル を使用):

print(f"0x{value:X}")
24
Eric

Upper()を使用するだけです。

intNum = 1234
hexNum = hex(intNum).upper()
print('Upper hexadecimal number = ', hexNum)

出力:

Upper hexadecimal number =  0X4D2
6
nimesh

大文字の%Xを使用する場合:

>>> print("%X" % 255)
FF

Python 3.6時代の更新:f文字列内のフォーマット部分で「X」を使用するだけです:

print(f"{255:X}")

(f文字列は任意の有効なPython :の前の式-直接数値式と変数名を含む)を受け入れます)。

4
jsbueno

F-stringsを使用したPython 3イディオムは次のようになります。

value = 1234
print(f'0x{value:X}')
'0x4D2'

注(およびこれが重複しない理由):

  • 方法を示します「0x」プレフィックスの大文字化は避けてください、これは他の回答の問題でした
  • 表示変数補間を取得する方法f'{value}';実際に16進リテラルを実際のコードに入れる人は誰もいません。補間を行うには多くの落とし穴があります。私も試したように、それはf'{x:value}'でもf'{0x:value}'でもf'{value:0x}'でもf'{value:%x}'でもありません。つまずく方法はたくさんあります。構文を取得するために4つのチュートリアルとwhatsnewドキュメントを読み直した後も、15分の試行錯誤が必要でした。この回答は、f文字列変数の補間を正しく行う方法を示しています。他の人はしません。
0
smci

print(hex(value).upper().replace('X', 'x'))

負の数を正しく処理します。

0
Simon Lindholm