1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > python二进制解码_使用python3对二进制数据进行编码和解码 以将其包含到JSON中...

python二进制解码_使用python3对二进制数据进行编码和解码 以将其包含到JSON中...

时间:2019-08-14 12:18:54

相关推荐

python二进制解码_使用python3对二进制数据进行编码和解码 以将其包含到JSON中...

我需要决定将二进制元素包含到消息对象中的模式,以便在接收端(在我的情况下是Rabbit MQ/AMQP队列上的消费者)再次解码。在

我决定不使用基于JSON的多部分MIME编码,主要是因为它看起来像是在使用Thor的锤子来推动一个图钉。我决定不手动连接部分(二进制和JSON连接在一起),主要是因为每次出现新的需求时,都需要重新设计。在其中一个字段中使用二进制编码的JSON似乎是一个优雅的解决方案。在

我的看似可行的解决方案(通过比较MD5发送和接收数据的总和来确认)正在执行以下操作:def json_serialiser(byte_obj):

if isinstance(byte_obj, (bytes, bytearray)):

# File Bytes to Base64 Bytes then to String

return base64.b64encode(byte_obj).decode('utf-8')

raise ValueError('No encoding handler for data type ' + type(byte_obj))

def make_msg(filename, filedata):

d = {"filename": filename,

"datalen": len(filedata),

"data": filedata}

return json.dumps(d, default=json_serialiser)

在接收端,我只需:

^{pr2}$

我的googlefu让我无法确认我所做的事实上是否有效。我特别关心从二进制数据生成字符串以包含到JSON中的行是否正确,例如

return base64.b64encode(byte_obj).decode('utf-8')

而且似乎我可以采取一个捷径来解码回二进制数据,因为base64.b64decode()方法处理UTF-8数据,就像它是ASCII一样-正如人们预期它来自base64.b64encode()的输出一样。。。但在所有情况下,这是一个有效的假设吗?在

大多数情况下,我很惊讶在网上找不到这样做的任何例子。也许我的谷歌耐心还在度假呢!在

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。