Pythonでの10進数と16進数の変換

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'

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です