关于 Python 中的字节字符串和 base64 编码的混淆



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

my_byte_string = b'x07Lx1bxa8bx8fxbax1b{x1cx16CwWxa5xae!x93MY'

我使用 base64 模块来获得这个:

my_base64_string = base64.b64encode(my_byte_string)
print(my_base64_string)
b'B0wbqGKPuht7HBZDd1elriGTTVk='

当我这样做时,我对"\"字符会发生什么感到困惑。我知道它们表示不同字节的分离,但它们是像其他字符一样由 b64en 编码,还是被忽略?

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

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

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

最新更新