繁体   English   中英

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

[英]How to convert string to byte arrays?

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

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

也许你想要这个(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]

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

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

并且为了满足你的参考表示(不要认真对待,猜猜这不是你真正想要的 ):

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM