字面意思将字符串转换为字节

时间:2015-07-19 20:10:03

标签: string python-3.x encoding byte

我想要一个字符串,如:

'\\xeb\\x4d' 

并将其转换为:

b'\xeb\x4d'

如果我这样做:

bytes('\\xeb\\x4d', 'utf-8')

我明白了:

b'\\xeb\\x4d'

我需要做以下事情:

something('\\xeb\\x4d') == b'\xeb\x4d'

2 个答案:

答案 0 :(得分:1)

a = '\\xeb\\x4d'
a = bytes(a, 'utf-8')
a = a.decode('unicode_escape').encode('latin1')

给出

b'\xebM'

,因为

'\x4d' == 'M'

答案 1 :(得分:1)

>>> a = '\\xeb\\x4d'   # a Unicode string
>>> a.encode('latin1') # get a byte string
b'\\xeb\\x4d'
>>> a.encode('latin1').decode('unicode_escape') # unescape, get a Unicode string
'ëM'
>>> a.encode('latin1').decode('unicode_escape').encode('latin1') # get a byte string
b'\xebM'
>>> a.encode('latin1').decode('unicode_escape').encode('latin1') == b'\xeb\x4d'
True

请注意,latin1是Unicode的前256个代码点,因此对Unicode的前256个字节进行编码会得到与原始代码点相同的字节值。