Python - 16進文字列とバイト列の扱い

まえがき

たまによくある処理、16進文字列とバイトの相互変換の仕方を知っておく。

binascii

標準ライブラリの binascii モジュールで行える。
a2b_hex と unhexlify が 16進文字列からバイト列への変換処理。
b2a_hex と hexlify が バイト列から16進文字列への変換処理。
hexlify/unhexlify は後からできた、違いは知らない。
a2b_hex/unhexlify の入力は str型も受け付けるが、 b2a_hex/hexlify は 入出力共に byte 型なので、bytes 型に変換して入力した方が間違いが少ない。

サンプル

#!/usr/bin/env python3
# coding: utf-8
"""python script
"""

import binascii


def main():
    """main
    """
    text = '0123456789abcdef'.encode('ascii')
    binary1 = binascii.a2b_hex(text)
    binary2 = binascii.unhexlify(text)
    hexstr1 = binascii.b2a_hex(binary1)
    hexstr2 = binascii.hexlify(binary2)

    print(hexstr1)
    print(hexstr2)


if __name__ == '__main__':
    main()

See also