首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python3 Base64解码混乱的换行符

Python3 Base64解码混乱的换行符
EN

Stack Overflow用户
提问于 2016-09-28 14:35:18
回答 1查看 7.7K关注 0票数 3

我试图通过标准的python库解码一个base64多行文件,但是只有第一行被解码,其余的被无缘无故地转储。

为什么会这样呢?

文件被编码前(解码后要达到的目标):

dataFile.dat 版本: BenWin+版本: 3.0.12.1CRLF 创建日期:2016年9月1日12:56:27 PMCRLF 时间代码: 0x907e0,0x10004,0x38000c,0x242001bCRLF ..。

CR和LF分别是载运返回(\r)和线路馈电(\n)的字符代码。

我base64使用base64 64.b64encode对文件进行编码,并希望稍后对其进行解码。这是我的代码片段。

代码语言:javascript
运行
复制
encodedData = b'VkVSU0lPTjogQmVuV2luKyBWZXJzaW9uOiAzLjAuMTIuMQo=Cg==Q1JFQVRFRDogMDEgU2VwdGVtYmVyIDIwMTYgMTI6NTY6MjcgUE0KCg==VElNRSBDT0RFOiAweDkwN2UwLCAweDEwMDA0LCAweDM4MDAwYywgMHgyNDIwMDFiCg==Cg=='

data = base64.b64decode(encodedData)
print(data)

回传

b'VERSION: BenWin+版本:3.0.12.1\n

提前谢谢。使用Python3.5

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-28 15:03:50

问题似乎是,您正在对每一行进行单独编码,然后将这些编码的字符串连接在一起。一个Base-64编码字符串可能以填充字符结尾,当解码器看到这些填充字符时,它假设这是有效数据的结束,因此任何后续数据都会被忽略。

下面是如何在Python3中编码多行文本的方法。首先,我们需要将Base64文本转换为字节。然后,我们Base64对所有这些字节一次编码。要解码,我们要反转这个过程:首先是Base64解码,然后将得到的字节解码成Unicode字符串。请注意,\r\n已被正确保存。

代码语言:javascript
运行
复制
import base64

s = 'VERSION: BenWin+ Version: 3.0.12.1\r\r\nCREATED: 01 September 2016 12:56:27 PM\r\r\nTIME CODE: 0x907e0, 0x10004, 0x38000c, 0x242001b\r\r\n'
print(s)

b = base64.b64encode(s.encode('utf8'))
print(b)

z = base64.b64decode(b).decode('utf8')
print(repr(z))

输出

代码语言:javascript
运行
复制
VERSION: BenWin+ Version: 3.0.12.1
CREATED: 01 September 2016 12:56:27 PM
TIME CODE: 0x907e0, 0x10004, 0x38000c, 0x242001b

b'VkVSU0lPTjogQmVuV2luKyBWZXJzaW9uOiAzLjAuMTIuMQ0NCkNSRUFURUQ6IDAxIFNlcHRlbWJlciAyMDE2IDEyOjU2OjI3IFBNDQ0KVElNRSBDT0RFOiAweDkwN2UwLCAweDEwMDA0LCAweDM4MDAwYywgMHgyNDIwMDFiDQ0K'
'VERSION: BenWin+ Version: 3.0.12.1\r\r\nCREATED: 01 September 2016 12:56:27 PM\r\r\nTIME CODE: 0x907e0, 0x10004, 0x38000c, 0x242001b\r\r\n'
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39750575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档