簡體   English   中英

Python和.NET之間的二進制文件兼容性

[英]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.

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