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)  # 出力: 0xa

2. 直接数値を使用

number = 10
result = hex(number)
print(result)  # 出力: 0xa

3. 浮動小数点数の場合

浮動小数点数を16進数に変換する場合は、まず整数に変換する必要があります。

float_number = 10.5
result = hex(int(float_number))
print(result)  # 出力: 0xa

hex()関数の基本的な使い方

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進数への変換を行うことができます。