今回は、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
|
結果は以下の通りです。
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 の記事。