gpt4 book ai didi

Python 3 Base64 解码弄乱换行符

转载 作者:行者123 更新时间:2023-12-01 03:39:59 32 4
gpt4 key购买 nike

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

这是为什么?

编码之前的文件(解码后我想要实现的目标):

dataFile.dat

VERSION: BenWin+ Version: 3.0.12.1[CR]

[CR][LF]

CREATED: 01 September 2016 12:56:27 PM[CR]

[CR][LF]

TIME CODE: 0x907e0, 0x10004, 0x38000c, 0x242001b[CR]

[CR][LF]

...

[CR]和[LF]分别是回车符(\r)和换行符(\n)的字符代码

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

encodedData = b'VkVSU0lPTjogQmVuV2luKyBWZXJzaW9uOiAzLjAuMTIuMQo=Cg==Q1JFQVRFRDogMDEgU2VwdGVtYmVyIDIwMTYgMTI6NTY6MjcgUE0KCg==VElNRSBDT0RFOiAweDkwN2UwLCAweDEwMDA0LCAweDM4MDAwYywgMHgyNDIwMDFiCg==Cg=='

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

哪个返回

b'VERSION: BenWin+ Version: 3.0.12.1\n'

提前致谢。使用Python 3.5

最佳答案

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

以下是如何在 Python 3 中对多行文本进行 Base64 编码。首先,我们需要将 Unicode 文本转换为字节。然后我们一次性对所有这些字节进行 Base64 编码。为了解码,我们反转该过程:首先进行 Base64 解码,然后将结果字节解码为 Unicode 字符串。请注意,\r\n 已正确保留。

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))

输出

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'

关于Python 3 Base64 解码弄乱换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39750575/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com