Pythonでの10進数と16進数の変換
はじめに
Pythonでは、10進数と16進数の変換を簡単に行うことができます。本記事では、基本的な変換方法から応用的な方法まで詳しく解説します。
10進数を16進数に変換
Pythonで10進数を16進数に変換するには、hex()
関数を使用します。
# 10進数から16進数へ
num = 255
hex_value = hex(num)
print(hex_value) # 出力: '0xff'
先頭の 0x
は16進数であることを示します。プレフィックスなしの文字列として取得したい場合は、format()
や f-string
を使用できます。
# 16進数のプレフィックスなし
print(format(num, 'x')) # 出力: 'ff'
print(f"{num:x}") # 出力: 'ff'
16進数を10進数に変換
16進数を10進数に変換するには、int()
関数を使用します。
# 16進数から10進数へ
hex_str = "ff"
decimal_value = int(hex_str, 16)
print(decimal_value) # 出力: 255
また、0x
付きの文字列もそのまま変換可能です。
hex_str_with_prefix = "0xff"
decimal_value = int(hex_str_with_prefix, 16)
print(decimal_value) # 出力: 255
フォーマットを指定した変換
16進数のフォーマットを指定する場合、ゼロ埋めや大文字・小文字の指定が可能です。
num = 255
print(f"{num:04x}") # 出力: '00ff' (4桁ゼロ埋め)
print(f"{num:X}") # 出力: 'FF' (大文字)
ビット演算を利用した変換
ビット演算を利用することで、手動で16進数へ変換することも可能です。
def decimal_to_hex(num):
hex_chars = "0123456789abcdef"
result = ""
while num > 0:
remainder = num % 16
result = hex_chars[remainder] + result
num //= 16
return result or "0"
print(decimal_to_hex(255)) # 出力: 'ff'
実用的な例
バイトデータを16進数に変換
data = b"hello"
hex_representation = data.hex()
print(hex_representation) # 出力: '68656c6c6f'
ファイルのバイナリデータを16進数に変換
with open("example.bin", "rb") as f:
data = f.read()
print(data.hex())
色コードの変換
r, g, b = 255, 165, 0
hex_color = f"#{r:02x}{g:02x}{b:02x}"
print(hex_color) # 出力: '#ffa500'