繁体   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