[英]Compatibility of Binary Files between Python and .NET
.NET程序創建的二進制文件可以被Python讀取,反之亦然嗎?
哪些數據類型對此兼容?
示例VB.NET程序:
Sub Main()
Using writer As New System.IO.BinaryWriter( _
System.IO.File.Open("Test.bin", IO.FileMode.Create))
writer.Write(True)
writer.Write(123)
writer.Write(123.456)
writer.Write(987.654D)
writer.Write("Test string.")
End Using
Using reader As New System.IO.BinaryReader( _
System.IO.File.Open("Test.bin", IO.FileMode.Open))
Console.WriteLine(reader.ReadBoolean())
Console.WriteLine(reader.ReadInt32())
Console.WriteLine(reader.ReadDouble())
Console.WriteLine(reader.ReadDecimal())
Console.WriteLine(reader.ReadString())
End Using
Console.Write("Press <RETURN> to exit.")
Console.ReadKey()
End Sub
Python不太可能使用相同的約定來存儲二進制數據。
需要注意的問題包括從持久性到數據結構布局的所有方面。 英特爾CPU使用最低有效位排序,TCP / IP網絡協議和許多非英特爾CPU(包括UNIX傳統上運行的CPU)使用最高有效位排序。 諸如.NET之類的與平台無關的系統,在寫入二進制文件時將遵循一個順序。 因此,無論.NET是在Core i7還是ARM或其他CPU上運行,它都將與其自身兼容。 但是,即使Python始終使用與.NET相同的順序,也完全不可能以相同的方式布置數據類型和數據結構。
如果需要在兩個平台上使用兼容的文件IO庫,這將使您處於有利位置,這比您要注冊要花更多的工作。
幸運的是,有一些庫可供您使用。 參見此答案的一個示例。
當然,現代的友好方法是用XML或JSON等格式寫出帶分隔符的文本文件。 或者,如果您要處理非常大的數據集,則只需使用數據庫即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.