Pythonのhex関数を使って数字を16進数に変換する方法

スポンサーリンク

今回は、Pythonのhex()関数を取り上げます。

この関数は、整数を “0x “を先頭に持つ16進数の文字列に変換したい場合に便利です。

この関数をどのように使うか見てみましょう。

スポンサーリンク

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

結果は以下の通りです。

0x3e8
0x7
0x3f
0xff

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 called
0xff

確かに、見ての通り、期待通りの結果を返してくれます。

まず、hex() はカスタムクラスの メソッドを呼び出します。

そして、返された値を16進数の文字列(255 -> “0xff”)に変換しています。

まとめ

今回は、hex()関数を使って、数値を16進数の文字列に変換することを学びました。

参考文献

  • Python hex() についての JournalDev の記事。
タイトルとURLをコピーしました