Python 2.xにはchr()
があり、これは0〜255の範囲の数値を、その数値を持つ1文字のバイト文字列に変換し、unichr()
は、 0-0x10FFFFの範囲から、そのUnicodeコードポイントを持つ1文字のUnicode文字列。 Python 3.xはunichr()
をchr()
に置き換え、その「Unicode文字列はデフォルトです」ポリシーに準拠していますが、何も見つかりません_2to3
_ユーティリティ(2.6以降)は、古いchr()
が行ったこととまったく同じことを行いますが、chr
呼び出しをそのままにしますが、これは一般的には正しくありません:(
(これは、8ビットバイトに関して明示的に定義されているファイル形式を解析およびシリアル化するためのものです。)
Python2とPython3で同じように機能するbytearray((255、))の使用を検討してください。両方のPython世代で、結果のbytearray-objectは、Python2のstr()およびPython3の実際のbytes()のエイリアスであるbytes(obj)に変換できます。
# Python2
>>> x = bytearray((32,33))
>>> x
bytearray(b' !')
>>> bytes(x)
' !'
# Python3
>>> x = bytearray((32,33))
>>> x
bytearray(b' !')
>>> bytes(x)
b' !'
以下を試してください:
b = bytes([x])
例えば:
>>> bytes([255])
b'\xff'
Python 2/3互換コードを記述したい場合は、 six.int2byte
>>> import struct
>>> struct.pack('B', 10)
b'\n'
>>> import functools
>>> bchr = functools.partial(struct.pack, 'B')
>>> bchr(10)
b'\n'
さらに別の方法(Python 3.5以降):
>>> b'%c' % 65
b'A'