chr()等效返回一个字节对象,在py3k中

zwo*_*wol 35 python unicode python-3.x

蟒2.x的有chr(),其在0-255范围内,以一个字节字符串转换多个具有与该数字值的一个字符,并且unichr(),这在范围0-0x10FFFF许多具有一个字符与Unicode的转换为Unicode字符串码点.Python 3.x替换unichr()chr(),符合其"Unicode字符串是默认的"策略,但我找不到任何与旧的完全相同的东西chr().在2to3(2.6)工具留下chr电话独自一人,这是不正确的,一般:(

(这用于解析和序列化以8位字节显式定义的文件格式.)

Mar*_*ers 34

请尝试以下方法:

b = bytes([x])
Run Code Online (Sandbox Code Playgroud)

例如:

>>> bytes([255])
b'\xff'
Run Code Online (Sandbox Code Playgroud)

  • Python2中的字节((255,))不会给你b'\ xff'...而是返回'(255,)'. (6认同)
  • @Zack:您可以使用``bytes((255,))``作为变体. (3认同)
  • @GuidoDraheim2013:它是Python 3代码,即不要在Python 2上使用`bytes([255])`,在那里使用`chr(255)`. (2认同)

Gui*_*eim 13

考虑使用在Python2和Python3中工作相同的bytearray((255,)).在两代Python中,生成的bytearray对象可以转换为字节(obj),它是Python2中str()和Python3中实数字节()的别名.

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

# Python3
>>> x = bytearray((32,33))
>>> x
bytearray(b' !')
>>> bytes(x)
b' !'
Run Code Online (Sandbox Code Playgroud)


you*_*ufu 7

如果您想编写Python 2/3兼容代码,请使用 six.int2byte


Eci*_*ana 7

另一种选择(Python 3.5+):

>>> b'%c' % 65
b'A'
Run Code Online (Sandbox Code Playgroud)


小智 5

>>> import struct
>>> struct.pack('B', 10)
b'\n'
>>> import functools
>>> bchr = functools.partial(struct.pack, 'B')
>>> bchr(10)
b'\n'
Run Code Online (Sandbox Code Playgroud)