Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中base64编码/解码上有额外的新行吗?_Python_Python 3.x_Base64_Decode_Encode - Fatal编程技术网

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

在Python中base64编码/解码上有额外的新行吗?,python,python-3.x,base64,decode,encode,Python,Python 3.x,Base64,Decode,Encode,我编写了以下实用程序函数: 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_.e

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

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


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

[编辑]
根据标记的答案,使用
返回bin2str(base64.b64encode(der))
,只要输入字符串
test
不包含任何
“\n”
,就可以正常工作

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

用于插入换行符的文档

按照RFC 2045(MIME),对对象s之类的字节进行编码,对象s可以包含任意二进制数据,并返回包含base64编码数据的字节,在每76个字节的输出后插入换行符(b'\n'),并确保有一个尾随换行符


您可能想改用。

我尝试过,但现在第二个输出没有任何新行。但是我想得到相同的输入,
assert(test==der2str(str2der(test))
鉴于“\n”不是base64字母表的一部分,我认为这是不可能的-解码器将假定嵌入的换行符不是要解码的文本的一部分(我猜)。