我需要使用 python 将一些数据(如整数、 float 等)导出到二进制文件。之后,我必须再次用 C# 读取该文件,但它对我不起作用。
我尝试了几种用 python 编写二进制文件的方法,只要我用 python 读取它,它就可以工作:
a = 3
b = 5
with open('test.tcd', 'wb') as file:
file.write(bytes(a))
file.write(bytes(b))
或者这样写:
import pickle as p
with open('test.tcd', 'wb') as file:
p.dump([a, b], file)
目前我正在用 C# 读取文件,如下所示:
static void LoadFile(String path)
{
BinaryReader br = new BinaryReader(new FileStream(path, FileMode.Open));
int a = br.ReadInt32();
int b = br.ReadInt32();
System.Diagnostics.Debug.WriteLine(a);
System.Diagnostics.Debug.WriteLine(b);
br.Close();
}
不幸的是,输出不是 3 和 5,而是我的输出为零。如何正确读取或写入二进制文件?
最佳答案
在 Python 中,您必须每个整数写入 4 个字节。在这里阅读更多信息:struct.pack
a = 3
b = 5
with open('test.tcd', 'wb') as file:
f.write(struct.pack("<i", 3))
f.write(struct.pack("<i", 5))
您的 C# 代码现在应该可以运行了。
关于python - 使用 C# BinaryReader 读取 python 二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65361211/