この投稿では、Pythonで整数を16進文字列に変換する方法について見ていきます。
hex() function
整数を16進文字列に変換するPythonの方法は、組み込み関数hex()
を使用する方法です。 これは 0x
を先頭にした小文字の16進文字列を返します。
1
2
3
4
5
6
7
8
|
if __name__ == ‘__main__’:
i = 4095
h = hex(i)
print(h) # ‘0xfff’
|
16進数の大文字の列を取得したり接頭語を取り除くには後述の解決方法のいずれかを使用することです。
format() function
もうひとつの方法は、x
format specification を使って整数を16進文字列に変換できる組み込み関数 format()
を使うことである。 #x
を使用した場合、16進文字列の先頭に 0x
が付く。 X
や #X
を使うと、大文字の16進文字列が得られます。
1
2
3
4
5
6
7
|
if __name__ == ‘__main__’s:
i = 4095
h = (format(i, ‘#x’), format(i, ‘#X’), format(i, ‘x’), format(i, ‘X’)))。
print(h) # (‘0xfff’, ‘0XFFF’, ‘fff’, ‘FFF’)
|
f-strings
Python 3.6 から f-string を使えるようにしました。 これは文字列リテラルにf
またはF
を前置することで可能です。 文字列リテラルは中括弧 {}
で囲まれ、整数の後にコロン :
で区切られたフォーマット指定 x
を含む必要があります。
16進数文字列に 0x
を付けるには #x
、大文字の16進数文字列にするには X
または #X
を使用します。 コードはこんな感じです。
1
2
3
4
5
6
7
|
if __name__ == ‘__main__’:
i = 4095
h = (f'{i:#x}’, f'{i:#X}’, f'{i:x}’, f'{i:X}’)
print(h) # (‘0xfff’, ‘0XFFF’, ‘fff’, ‘FFF’)
|
になります。