如何将字符串转换为字节数组?

时间:2010-12-20 15:10:57

标签: python

如何将字符串转换为字节值?我有一个字符串"hello",我想改变的是"/x68..."

3 个答案:

答案 0 :(得分:32)

Python 2.6及更高版本的bytearray类型可能正是您所需要的。与字符串不同,它是可变的,即,您可以“就地”更改单个字节,而不必创建一个全新的字符串。它具有列表和字符串功能的完美组合。它还使你的意图清晰,你正在使用任意字节而不是文本。

答案 1 :(得分:28)

也许你想要这个(Python 2):

>>> map(ord,'hello')
[104, 101, 108, 108, 111]

对于Unicode字符串,这将返回Unicode代码点:

>>> map(ord,u'Hello, 马克')
[72, 101, 108, 108, 111, 44, 32, 39532, 20811]

但要对其进行编码以获取编码的字节值:

>>> map(ord,u'Hello, 马克'.encode('chinese'))
[72, 101, 108, 108, 111, 44, 32, 194, 237, 191, 203]
>>> map(ord,u'Hello, 马克'.encode('utf8'))
[72, 101, 108, 108, 111, 44, 32, 233, 169, 172, 229, 133, 139]

答案 2 :(得分:12)

如果你想获得十六进制字符串表示,你可以这样做:

"hello".encode("hex") # '68656c6c6f'

为了满足您的参考代表(不要认真对待,猜猜这是 不是您真正想要的 ):

"".join(["/x%02x" % ord(c) for c in "hello"]) # '/x68/x65/x6c/x6c/x6f'
相关问题