从字面上将字符串转换为字节
Convert string to bytes literally
我想取一个字符串如:
'\xeb\x4d'
并把它变成:
b'\xeb\x4d'
如果我这样做:
bytes('\xeb\x4d', 'utf-8')
我得到:
b'\xeb\x4d'
我需要执行以下操作的东西:
something('\xeb\x4d') == b'\xeb\x4d'
a = '\xeb\x4d'
a = bytes(a, 'utf-8')
a = a.decode('unicode_escape').encode('latin1')
给予
b'\xebM'
因为
'\x4d' == 'M'
>>> 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 个字节进行编码会得到与原始代码点相同的字节值。
我想取一个字符串如:
'\xeb\x4d'
并把它变成:
b'\xeb\x4d'
如果我这样做:
bytes('\xeb\x4d', 'utf-8')
我得到:
b'\xeb\x4d'
我需要执行以下操作的东西:
something('\xeb\x4d') == b'\xeb\x4d'
a = '\xeb\x4d'
a = bytes(a, 'utf-8')
a = a.decode('unicode_escape').encode('latin1')
给予
b'\xebM'
因为
'\x4d' == 'M'
>>> 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 个字节进行编码会得到与原始代码点相同的字节值。