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

21 投票
3 回答
91587 浏览
提问于 2025-04-16 08:47

我想知道怎么把一个字符串转换成它的字节值。我有一个字符串 "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 是可变的,也就是说,你可以直接修改里面的单个字节,而不需要每次都创建一个新的字符串。它结合了列表和字符串的一些特点。而且,它也能清楚地表明你的意图,就是你在处理的是任意的字节,而不是文本。

撰写回答