gpt4 book ai didi

python - 使用 base64 从 JSON 中获取二进制文件

转载 作者:行者123 更新时间:2023-12-01 00:59:33 24 4
gpt4 key购买 nike

我已经构建了两个解析器,它们可以处理除某些二进制 block 之外的所有内容。一种将专有格式转换为标准 json,另一种将其从 json 恢复为专有格式。

当我编写一个转到 json 的文件时,我很高兴将其全部解析为有效的 json,但担心我可能无法将二进制部分带回来,而这种担忧似乎已经成为现实。

我认为base64是必要的或者是一种可能的解决方案,因为二进制文件中充满了json不喜欢的字符,我认为尝试转义它们等将比这个base64解决方案更具挑战性。

这里是原始文件中的一个二进制 block :

cleanbinary = "0\x82\x02\xd80\x82\x01\xc0\xa0"

它被带入base64,如下所示:

import base64    
out = base64.encodebytes(cleanbinary.encode('utf-8'))
print(out)
>> b'MMKCAsOYMMKCAcOAwqA=\n'

那,你可以转回二进制:

z = base64.decodebytes(out).decode('utf-8')
print(z == cleanbinary)
>> True

它需要中间的一个步骤,但是我无法将其放入循环中间的 json 中。已尝试以下方法:

wrapped = '"' + str(out) + '"'

现在你有了 json 需要的双引号,它是一个 str 而不是 bytes:

print(wrapped)
>> '"b\'MMKCAsOYMMKCAcOAwqA=\\n\'"'

现在假设您已使用 Python 的 json 解析器从 json 文件中提取了该字符串值。如何将其转回字节值:

b'MMKCAsOYMMKCAcOAwqA=\n'

..以便可以将其解析回二进制?

最佳答案

我建议通过显式解码和编码将字节转换为字符串并返回:

out = b'MMKCAsOYMMKCAcOAwqA='

wrapped = f'"{out.decode()}"'
print(wrapped) # ---> "MMKCAsOYMMKCAcOAwqA="

unwrapped = wrapped.strip('"').encode()
print(unwrapped) # ---> b'MMKCAsOYMMKCAcOAwqA='

关于python - 使用 base64 从 JSON 中获取二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55920521/

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