在Python中base64编码/解码上有额外的新行吗?

2024-09-30 01:34:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了以下实用程序函数:

import base64

def der2str(der):
    return bin2str( base64.encodebytes(der) )

def str2der(str_):
    return base64.b64decode( str2bin(str_) )

def bin2str(binary):
    return binary.decode('utf8')

def str2bin(str_):
    return str_.encode('utf8')

我运行的程序是:

if __name__ == '__main__':
    test = 'MIIEowIBAAKCAQEA6cVU+6GZyr1jaxvJcLEdRb9cicL/4Soe/HqN+gE/UdM5C71aG6HhNSplj1qi\nX8Abffen'
    print(test)
    print(der2str(str2der(test)))

但结果是:

MIIEowIBAAKCAQEA6cVU+6GZyr1jaxvJcLEdRb9cicL/4Soe/HqN+gE/UdM5C71aG6HhNSplj1qi
X8Abffen
MIIEowIBAAKCAQEA6cVU+6GZyr1jaxvJcLEdRb9cicL/4Soe/HqN+gE/UdM5C71aG6HhNSplj1qi
X8Abffen


为什么我要在第二次打印时多打印两行

[编辑]
根据标记的答案,只要输入字符串test不包含任何'\n',就可以使用return bin2str( base64.b64encode(der) )

如果有人需要换行符,那么字符串必须以'\n'结尾,断言assert(test == der2str(str2der(test)))才能通过


Tags: testreturndefbinarybase64strderge
1条回答
网友
1楼 · 发布于 2024-09-30 01:34:12

base64.encodebytes(s)的文档声明它插入了换行符

Encode the bytes-like object s, which can contain arbitrary binary data, and return bytes containing the base64-encoded data, with newlines (b'\n') inserted after every 76 bytes of output, and ensuring that there is a trailing newline, as per RFC 2045 (MIME).

您可能想改用base64.b64encode

相关问题 更多 >

    热门问题