今回は、Pythonのhex()関数を取り上げます。
この関数は、整数を “0x “を先頭に持つ16進数の文字列に変換したい場合に便利です。
この関数をどのように使うか見てみましょう。
この記事もチェック:Pythonのoct関数を使って整数(10進数)を8進数に変換する方法
Pythonのhex()関数を使う
Pythonのhex()関数は非常にシンプルな構文です。
hex_string = hex(val)
|
ここで、valは整数、2進数、8進数、16進数です。
早速、いくつかの例を見てみましょう。
print(hex(1000)) # decimal
print(hex(0b111)) # binary
print(hex(0o77)) # octal
print(hex(0XFF)) # hexadecimal
|
結果は以下の通りです。
0x3e80x70x3f0xff |
Python hex() をカスタムオブジェクトで使う
カスタムオブジェクトでもhex()を使用することができます。
しかし、これをうまく使うには、クラスにhex()ダンダメソッドを定義する必要があります。
hex()メソッドは __index__() を呼び出すので、これを実装する必要があります。
このメソッドは10進数/2進数/8進数/16進数の値を返す必要があります。
class MyClass:
def __init__(self, value):
self.value = value
def __index__(self):
print('__index__() dunder method called')
return self.value
my_obj = MyClass(255)
print(hex(my_obj))
|
結果は以下の通りです。
__index__() dunder method called0xff |
確かに、見ての通り、期待通りの結果を返してくれます。
まず、hex() はカスタムクラスの メソッドを呼び出します。
そして、返された値を16進数の文字列(255 -> “0xff”)に変換しています。
まとめ
今回は、hex()関数を使って、数値を16進数の文字列に変換することを学びました。
参考文献
- Python hex() についての JournalDev の記事。