如何将字符串转换为字节数组?
我想知道怎么把一个字符串转换成它的字节值。我有一个字符串 "hello"
,我想把它变成类似 "/x68..."
这样的格式。
3 个回答
14
如果你想得到十六进制字符串的表示方式,你可以这样做:
"hello".encode("hex") # '68656c6c6f'
为了满足你的参考表示(不过别太认真对待这个,猜测这并不是你真正想要的):
"".join(["/x%02x" % ord(c) for c in "hello"]) # '/x68/x65/x6c/x6c/x6f'
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]
33
Python 2.6 及以后的版本有一种叫做 bytearray 的类型,这可能正是你需要的。跟字符串不同,bytearray 是可变的,也就是说,你可以直接修改里面的单个字节,而不需要每次都创建一个新的字符串。它结合了列表和字符串的一些特点。而且,它也能清楚地表明你的意图,就是你在处理的是任意的字节,而不是文本。