如何在Python2中将字符串转换为字节?

时间:2019-08-22 22:38:31

标签: python string type-conversion byte python-2.x

我正在尝试将字符串转换为字节,并且这些字节必须为字符串类型。我知道如何在pyhon3中做到这一点,这很简单,但是在python2中,我只是迷路了:(

我已经尝试了python2中的encode()函数,但是它似乎不起作用,我读到python2中没有字节类型之类的东西,所以也许是我失败的原因。

无论如何,我是用python3编写此代码的,它可以完美地工作:

>>> a="hey"
>>> b=bytes(a, 'utf-8')
>>> print(b)
b'hey'
>>> type(b)
<class 'bytes'>
>>> c=''
>>> for i in b:
...     c+=str(i)+" "
...
>>>
>>> print (c)
104 101 121

我尝试使用python2代替了字节数(a,'utf-8'),但这是说str()恰好采用了一个参数(给定2)。 然后我尝试了encode()和bytearray(),但是两者都没有运气。

如果您对如何获取python2中104 101 121的代表字节ehy的任何提示,或者您确定无法进行此“转换”,请告诉我。

>

1 个答案:

答案 0 :(得分:1)

在Python 2中无需进行此类转换,因为bytes只是Python 2中str的别名。

根据documentation

  

Python 2.6将bytes添加为同义词   str类型,并且还支持   b''表示法。

     

2.6 str与3.0字节不同   以各种方式打字;最为显着地,   构造函数是完全   不同。在3.0中,bytes([65, 66, 67])   长3个元素,其中包含   代表ABC的字节;在2.6中,   bytes([65, 66, 67])返回   代表str()的12个字节的字符串   列表中的

。      

2.6中bytes的主要用法是   是写这样的对象类型的测试   为isinstance(x, bytes)。这将   帮助2to3转换器,   告诉2.x代码是否打算使用字符串   包含字符或8位   字节;您现在可以使用bytes或   str代表您的意图   确切地,结果代码将   在Python 3.0中也是正确的。

如果您希望Python 2中bytes的Python 3行为能够以整数形式遍历字节,则可以将字符串转换为bytearray(请记住, bytearraystrbytes不同,它是可变的):

>>> a = 'hey'
>>> b = bytearray(a)
>>> c = ''
>>> for i in b:
...     c += str(i) + ' '
...
>>> print(c)
104 101 121

或者,您可以使用ord函数将每个字符转换为其序数:

>>> for c in 'hey':
...     print ord(c)
...
104
101
121
相关问题