【发布时间】:2020-04-04 10:03:53
【问题描述】:
我已经编写了这些实用函数:
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
为什么我在第二次打印时会得到这两个额外的新行?
[编辑]
根据标记的答案,使用return bin2str( base64.b64encode(der) ),只要输入字符串test不包含任何'\n',就可以正常工作。
如果有人需要换行符,则字符串必须以 '\n' 结尾,断言 assert(test == der2str(str2der(test))) 才能通过。
【问题讨论】:
标签: python python-3.x base64 decode encode