混淆字节字符串和base64编码在Python

问题描述:

在Python 3,可以说我有个字节的字符串:混淆字节字符串和base64编码在Python

my_byte_string = b'\x07L\x1b\xa8b\x8f\xba\x1b{\x1c\x16CwW\xa5\xae!\x93MY' 

,我使用的base64模块得到这个:

my_base64_string = base64.b64encode(my_byte_string) 

print(my_base64_string) 

b'B0wbqGKPuht7HBZDd1elriGTTVk=' 

当我这样做,我很困惑'\'字符发生了什么。我知道它们表示不同字节的分离,但是它们是否像b64encode一样被其他字符编码,还是被忽略?

+0

你混淆了嵌入特殊字符与真实人物。一个简单的例子就是'\ n'发生了什么 - 它不是以两个字符存储的,而是作为平台换行符的字符。 – cdarke

'\'字符不表示不同字节的分隔,它是一个string literal,用于转义具有特殊含义的字符。在你的情况下,你使用\x<hex>,它告诉Python解释器将你指定的字节值放到字符串中。因此,您按顺序指定的这些字节(0x07L0x1b,...)被编码为base64,而没有其他字符。

为了验证这一点,看看你的二进制数据的十六进制表示:

>>> import binascii 
>>> binascii.hexlify(my_byte_string) 
b'074c1ba8628fba1b7b1c16437757a5ae21934d59'