【Python】hex 関数の使い方と実行結果

Python の組み込み関数 hexヘクス の使い方です。

hex 関数で、整数を『16 進数じゅうろくしんすう (hexadecimalヘキサデシマル)』で表現するコード例と、実行結果を載せました。

hex 関数は、整数を 16 進数の文字列に変換してくれました。

(例)hex(16) -> '0x10'

あと、『エラーになったコード例』も書きました。

エラーになったコード例

hex 関数で、エラーになったコードれいです。

hex 関数に整数せいすうでないものを渡したら、『整数として解釈できませんでした』というむねのエラーメッセージが出ました。

(Python) hex(x)

hex('') # '' 空文字列
TypeError: 'str' object cannot be interpreted as an integer
hex('5') # '5'
TypeError: 'str' object cannot be interpreted as an integer
hex('a') # 'a'
TypeError: 'str' object cannot be interpreted as an integer
hex(1.2) # 1.2
TypeError: 'float' object cannot be interpreted as an integer
hex(complex(3, 4)) # (3+4j)
TypeError: 'complex' object cannot be interpreted as an integer
hex(None) # None
TypeError: 'NoneType' object cannot be interpreted as an integer
hex(()) # ()
TypeError: 'tuple' object cannot be interpreted as an integer
hex([]) # []
TypeError: 'list' object cannot be interpreted as an integer
hex(set()) # set()
TypeError: 'set' object cannot be interpreted as an integer
hex({}) # {}
TypeError: 'dict' object cannot be interpreted as an integer
hex(range(0, 1)) # range(0, 1)
TypeError: 'range' object cannot be interpreted as an integer
hex(lambda x: x) # <function <lambda> at 0x0000000000000000>
TypeError: 'function' object cannot be interpreted as an integer
hex(bytes([5])) # b'\x05'
TypeError: 'bytes' object cannot be interpreted as an integer
hex(bytearray([5])) # bytearray(b'\x05')
TypeError: 'bytearray' object cannot be interpreted as an integer
from decimal import Decimal
hex(Decimal(1)) # Decimal('1')
TypeError: 'decimal.Decimal' object cannot be interpreted as an integer
import datetime
hex(datetime.datetime.max) # datetime.datetime(9999, 12, 31, 23, 59, 59, 999999)
TypeError: 'datetime.datetime' object cannot be interpreted as an integer
import datetime
hex(datetime.timedelta.max) # datetime.timedelta(days=999999999, seconds=86399, microseconds=999999)
TypeError: 'datetime.timedelta' object cannot be interpreted as an integer

bool を渡した結果

hex 関数に、boolブール真理値しんりち)を渡した結果です。

(Python) hex(x)

(Python) False

(Python) True

hex(False) # False
'0x0'
hex(True) # True
'0x1'

int を渡した結果

hex 関数に、intイント整数せいすう)を渡した結果です。

(Python) hex(x)

(Python) class int([x])

hex(16) # 16
'0x10'
hex(15) # 15
'0xf'
hex(1) # 1
'0x1'
hex(0) # 0
'0x0'
hex(-1) # -1
'-0x1'
hex(-15) # -15
'-0xf'
hex(-16) # -16
'-0x10'

ほかの方法

hex 関数の代わりに、

  • formatフォーマット 関数
  • str.formatエスティーアール ドット フォーマット メソッド
  • f''エフストリング
  • %パーセント 演算子

を使用して、16 進数の文字列に変換することもできました。

接頭辞せっとうじについてです。

16 進数の先頭に '0x'ゼロエックス を付けることもできましたし、逆に、'0x' を付けずに、16 進数の部分だけを取得することもできました。

16 -> '0x10'

16 進数の先頭に、接頭辞の '0x' を付けて変換するコード例です。

書式を指定するときの xエックス は、大文字の X にしたら、変換結果を大文字で受け取ることができました。

format 関数の実行結果です。

(Python) format(value[, format_spec])

(Python) 書式指定ミニ言語仕様 '#' オプション

format(16, '#x')
'0x10'
format(15, '#x')
'0xf'
format(15, '#X')
'0XF'
format(0, '#x')
'0x0'
format(-15, '#x')
'-0xf'
format(-16, '#x')
'-0x10'

str.format メソッドの実行結果です。

(Python) str.format(*args, **kwargs)

'{n:#x}'.format(n=16)
'0x10'
'{n:#x}'.format(n=15)
'0xf'
'{n:#X}'.format(n=15)
'0XF'
'{n:#x}'.format(n=0)
'0x0'
'{n:#x}'.format(n=-15)
'-0xf'
'{n:#x}'.format(n=-16)
'-0x10'

f''エフストリング の実行結果です。

(Python) フォーマット済み文字列リテラル (f-string, f''

f'{16:#x}'
'0x10'
f'{15:#x}'
'0xf'
f'{15:#X}'
'0XF'
f'{0:#x}'
'0x0'
f'{-15:#x}'
'-0xf'
f'{-16:#x}'
'-0x10'

%パーセント 演算子の実行結果です。

(Python) printf 形式の文字列書式化(% 演算子)

'%#x' % 16
'0x10'
'%#x' % 15
'0xf'
'%#X' % 15
'0XF'
'%#x' % 0
'0x0'
'%#x' % -15
'-0xf'
'%#x' % -16
'-0x10'

16 -> '10' 接頭辞 '0x' 無し

16 進数の先頭に、接頭辞せっとうじ'0x'ゼロエックス を付けないようにして変換するコード例です。

『16 進数の部分だけ』の文字列を取得することができました。

当然のことながら、結果だけを見たら、もはや何進数の数なのか、わからなくなっていました。

こちらも、書式を指定するときの xエックス は、大文字の X にしたら、変換結果を大文字で受け取ることができました。

format 関数の実行結果です。

(Python) format(value[, format_spec])

(Python) 書式指定ミニ言語仕様 '#' オプション

format(16, 'x')
'10'
format(15, 'x')
'f'
format(15, 'X')
'F'
format(0, 'x')
'0'
format(-15, 'x')
'-f'
format(-16, 'x')
'-10'

str.format メソッドの実行結果です。

(Python) str.format(*args, **kwargs)

'{n:x}'.format(n=16)
'10'
'{n:x}'.format(n=15)
'f'
'{n:X}'.format(n=15)
'F'
'{n:x}'.format(n=0)
'0'
'{n:x}'.format(n=-15)
'-f'
'{n:x}'.format(n=-16)
'-10'

f''エフストリング の実行結果です。

(Python) フォーマット済み文字列リテラル (f-string, f''

f'{16:x}'
'10'
f'{15:x}'
'f'
f'{15:X}'
'F'
f'{0:x}'
'0'
f'{-15:x}'
'-f'
f'{-16:x}'
'-10'

%パーセント 演算子の実行結果です。

(Python) printf 形式の文字列書式化(% 演算子)

'%x' % 16
'10'
'%x' % 15
'f'
'%X' % 15
'F'
'%x' % 0
'0'
'%x' % -15
'-f'
'%x' % -16
'-10'

以上です。

スポンサーリンク
Python
シェアする(押すとSNS投稿用の『編集ページ』に移動します)
フォローする(RSSフィードに移動します)
スポンサーリンク
シラベルノート
タイトルとURLをコピーしました