Pythonでhex()関数を使って数値を16進数に変換する際に発生する「TypeError: 'str' object cannot be interpreted as an integer」というエラーの解決方法について解説します。
このエラーは、hex()関数に文字列を渡したときに発生する一般的なエラーです。
エラーが発生する例
number = "10"
result = hex(number) # TypeError: 'str' object cannot be interpreted as an integerエラーの原因
hex()関数は整数値のみを引数として受け付けます。文字列や浮動小数点数を直接渡すとTypeErrorが発生します。
解決方法
1. 文字列を整数に変換してから使用
number = "10"
result = hex(int(number))
print(result) # 出力: 0xa2. 直接数値を使用
number = 10
result = hex(number)
print(result) # 出力: 0xa3. 浮動小数点数の場合
浮動小数点数を16進数に変換する場合は、まず整数に変換する必要があります。
float_number = 10.5
result = hex(int(float_number))
print(result) # 出力: 0xahex()関数の基本的な使い方
hex()関数は以下のような特徴があります:
- 戻り値は「0x」というプレフィックスが付いた文字列
- 負の数も変換可能
- 大文字の16進数が必要な場合は.upper()メソッドを使用
print(hex(255)) # 出力: 0xff
print(hex(-10)) # 出力: -0xa
print(hex(16).upper()) # 出力: 0X10プレフィックスを除去する方法
「0x」のプレフィックスが不要な場合は、以下のいずれかの方法で除去できます:
number = 16
# 方法1: スライスを使用
result1 = hex(number)[2:]
print(result1) # 出力: 10
# 方法2: format()を使用
result2 = format(number, 'x')
print(result2) # 出力: 10まとめ
- hex()関数は整数値のみを受け付ける
- 文字列を変換する場合は、先にint()で整数に変換する
- 浮動小数点数は整数に変換してから使用する
- 戻り値は「0x」プレフィックス付きの文字列
これらの方法を使えば、TypeErrorを回避して正しく16進数への変換を行うことができます。