为什么 binascii.b2a_base64() 和 base64.b64encode() 有区别?

Ven*_*ius 5 python python-2.7

我试图通过以下两个函数来理解我看到的一些不同的行为:

def hex_to_64(string):
    hex_string = binascii.a2b_hex(string)
    return binascii.b2a_base64(hex_string)

def hex_to_64_2(string):
    hex_string = binascii.a2b_hex(string)
    return base64.b64encode(hex_string)
Run Code Online (Sandbox Code Playgroud)

如果我将一个十六进制字符串传递给前者,我会在最后用换行符将其取回,而后者则没有。有什么原因吗?

Pau*_* Bu 3

没什么特别的,实施者决定这样做。它记录在binascii module中。

将二进制数据转换为 Base64 编码的一行 ASCII 字符。返回值是转换后的行,包括换行符。数据长度最多应为 57,以符合 base64 标准。

如果你对此感到不舒服,那就这样right strip

hex_to_64('aa').rstrip('\n')
>>>'qg=='
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!