Подтвердить что ты не робот

Chr() эквивалент, возвращающий объект байтов, в py3k

Python 2.x имеет chr(), который преобразует число в диапазоне 0-255 в строку байта с одним символом с этим числовым значением и unichr(), который преобразует число в диапазоне 0-0x10FFFF в строка Unicode с одним символом с кодовым номером Unicode. Python 3.x заменяет unichr() на chr(), в соответствии со своей политикой "Unicode strings is default", но я не могу найти ничего, что бы точно делало старое chr(). Утилита 2to3 (от версии 2.6) оставляет только chr вызовы, что не является правильным вообще: (

(Это для синтаксического анализа и сериализации формата файла, который явно определен в терминах 8-битных байтов.)

4b9b3361

Ответ 1

Рассмотрим использование bytearray ((255)), которое работает одинаково в Python2 и Python3. В обоих поколениях Python полученный объект bytearray может быть преобразован в байты (obj), который является псевдонимом для str() в Python2 и реальных байтах() в Python3.

# Python2
>>> x = bytearray((32,33))
>>> x
bytearray(b' !')
>>> bytes(x)
' !'

# Python3
>>> x = bytearray((32,33))
>>> x
bytearray(b' !')
>>> bytes(x)
b' !'

Ответ 2

Попробуйте следующее:

b = bytes([x])

Например:

>>> bytes([255])
b'\xff'

Ответ 3

>>> import struct
>>> struct.pack('B', 10)
b'\n'
>>> import functools
>>> bchr = functools.partial(struct.pack, 'B')
>>> bchr(10)
b'\n'

Ответ 4

Если вы хотите написать Python 2/3 совместимый код, используйте six.int2byte