簡體   English   中英

在Python中序列化二進制數據

[英]Serializing binary data in Python

我有一些二進制數據,這些數據在Python中是字節字符串數組的形式。

是否有一種可移植的方式來序列化其他語言可以讀取的數據?

JSON丟失了,因為我剛剛發現它沒有存儲二進制數據的真正方法。 其字符串應為Unicode。

我不想使用pickle因為我不希望有安全隱患,這限制了它只能在其他Python程序中使用。

有什么建議嗎? 我真的很想使用內置庫(或至少是標准Anaconda發行版中的一個庫)。

如果您只需要字符串中的二進制數據並且可以輕松地恢復各個字符串之間的邊界,則可以將它們作為原始字符串直接寫入文件中。

如果您不能輕松地恢復字符串邊界,那么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並再次編碼回原始字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM