1. 画面表示
  2. ファイル入力
    • ファイル出力

    Pythonのバイナリデータの扱いについて

    画面表示

    • printf

    • a = 15
      print("%02x" % a)             #=>  0f   (16進数で表示)
      
      b = "A"
      print(ord(b))                 #=>  65   (10進数で表示)
      print("0x%02x\n" % ord(b))    #=>  0x41
      
      c = "a"
      print(ord(c))                 #=>  97
      print("0x%02x\n" % ord(c))    #=>  0x61
      
      print(hex(ord(c))             #=>  0x61
      

    • ord

    • ord関数は、長さ1の文字列が8ビット文字列なら、バイト値を返します。

      data = 'B'
      print(ord(data))      #=>   66
      ord関数と、chr関数の機能は逆になります。 そのため、chr(ord('B'))と、 ord(chr(66)) は、何も処理していないのと同じになります。

    • hex

    • hex関数は、数値を16進数で表示します。

      data = 12
      print(hex(data))      #=>  0xc

    ファイル入力

    バイナリファイルのデータを読みだす場合、readメソッドが使用できます。 しかし、readメソッドは読み込んだデータを文字列として扱うので、整数値として扱う場合は関数ordを使用します。

    バイナリファイル "tmp.bin" の中身が16進数表示で 08 09 0A 0B 0C FF の場合

    f = open('tmp.bin', 'rb')
    while True:
        d = f.read(1)
        if d == "":
            break
        print ord(d),
        print '(%x) ' % ord(d),
    f.close		
    この実行結果は以下になります。
    8 (8)  9 (9)  10 (a)  11 (b)  12 (c)  255 (ff)

      ファイル出力

      ファイルにバイナリデータとして書き込みたい場合、chr()を使用する方法があります。