我正在努力将旧的C程序(目前在UNIX上运行)转换为我们的C#系统.
该程序将一些数据构建到几个结构中,然后使用如下所示的一系列字符写入文件:
fwrite ( &loc, sizeof ( struct loc_items ), 1, hdata.fp );
Run Code Online (Sandbox Code Playgroud)
使用loc作为数据,struct loc_items是它的一种类型的结构.
我的问题是,我是否能够将此文件输出与C#匹配?假设我可以匹配endian格式和浮点数,整数等的大小.
因为它在fwrite中编写整个结构,所以我不知道它正在编写结构的不同变量的顺序.fwrite可能会在结构周围填充任何问题吗?
有什么建议?
你有多种选择.
就个人而言,我不喜欢在这种情况下使用编组.我只需在您的结构或类中添加一些"打开/保存","读/写","水合/脱水","序列化/反序列化"方法.
class POCO {
int aaa;
double bbb;
public void Read(BinaryReader r) {
aaa = r.ReadInt32();
bbb = r.ReadDouble();
}
public void Write(BinaryWriter w) {
w.Write(aaa);
w.Write(bbb);
}
}
Run Code Online (Sandbox Code Playgroud)
这样,您就可以完全控制读取和写入的内容.