微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Python中序列化二进制数据

如何解决在Python中序列化二进制数据

如果您只需要字符串中的二进制数据并且可以轻松地恢复各个字符串之间的边界,则可以将它们作为原始字符串直接写入文件中。

如果您不能轻松地恢复字符串边界,那么JSON似乎是一个不错的选择:

a = [b"abc\xf3\x9c\xc6", b"xyz"]
serialised = json.dumps([s.decode("latin1") for s in a])
print [s.encode("latin1") for s in json.loads(serialised)]

将打印

['abc\xf3\x9c\xc6', 'xyz']

这里的技巧是,任意二进制字符串都是有效的latin1,因此始终可以将它们解码为Unicode,然后再次编码回原始字符串。

解决方法

我有一些二进制数据,它们在Python中是字节字符串数组的形式。

是否有一种可移植的方式来序列化其他语言可以读取的数据?

JSON丢失了,因为我刚刚发现它没有存储二进制数据的真正方法。其字符串应为Unicode。

我不想使用,pickle因为我不想存在安全风险,因此将其限制在其他Python程序中使用。

有什么建议吗?我真的很想使用内置库(或至少是标准Anaconda发行版中的一个库)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。