关于Python中字节字符串和base64编码的困惑

时间:2017-06-03 15:58:04

标签: python python-3.x encoding base64 byte

在Python 3中,假设我有一个字节串:

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编码,还是被忽略?

1 个答案:

答案 0 :(得分:2)

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

要验证这一点,请查看二进制数据的十六进制表示:

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