home changes contents help options

050:文字列をバイトごとに処理する

ord 関数でバイトの値を得る

8 ビット文字列(つまりバイナリデータでも可。このレシピは本来バイナリデータ向きです。)を バイトごとに分割し、処理を行うには次のようにします。

>>> s = 'abcde'
>>> for c in s:
...   print ord(c),
...
97 98 99 100 101

8 ビット文字列を for 文で処理すると、1バイトずつ取り出すことができます。 これを ord 関数に与えると、そのバイトの値を 0 から 255 の整数に変換することができます。

整数のリストに変換するだけならばリスト内包表記を用いて次のようにすることもできます。

>>> [ord(c) for c in s]
[97, 98, 99, 100, 101]

これは以下のコードと同じです。

>>> L = []
>>> for c in s:
...   i = ord(c)
...   L.append(i)
...
>>> L
[97, 98, 99, 100, 101]