.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
答案 0 :(得分:1)
Python使用相同的约定存储二进制数据的可能性很小。
需要注意的问题包括从结束到数据结构布局的所有内容。英特尔CPU使用最低有效位排序,TCP / IP网络协议和许多非英特尔CPU,包括UNIX传统上运行的CPU,使用最重要的位排序。像.NET这样的平台无关系统在编写二进制文件时会坚持一个排序。因此,无论是在Core i7,ARM还是其他CPU上运行,.NET都将与自身兼容。但即使Python始终使用与.NET相同的顺序,它也不太可能以相同的方式布置数据类型和数据结构。
如果需要在两个平台上使用兼容的文件IO库,这将使您处于适当位置,这比您想要注册的工作更多。
幸运的是,有些库可供您使用。有关示例,请参阅this answer。
当然,执行此类操作的现代友好方式是以XML或JSON格式写出分隔的文本文件。或者,如果您正在处理非常大的数据集,只需使用数据库。