【发布时间】:2020-08-25 21:16:33
【问题描述】:
我正在开发一个与西门子 PLC(工业控制器)交换数据的软件。 为了让它工作,我需要能够序列化和反序列化一个只包含变量当前值的字节数组。 我面临的问题是序列化/反序列化方法在变量的当前值之外添加了很多信息。 以下类的实例:
[Serializable]
public class VarMap
{
public byte var1;
public int64 var2;
public int32 var3;
}
序列化后,需要是一个字节数组,包含一个接一个的值,每个值都占用它们的字节大小: [var1 字节 1][var2 字节 1][var2 字节 2][var2 字节 3][var2 字节 4][var3 字节 1][var3 字节 2]。
有什么想法可以根据类的声明动态地实现这一点吗?
【问题讨论】:
-
这看起来类似于Serializing / Marshalling simple objects in C# to send over network, for an unmanaged C++ application to read 和How to convert a structure to a byte array in C#?,但是您对打包有特定的要求,即不包括对齐填充,我不确定编组会处理这些。
-
也许从the answer 到Struct alignment suggestions? 的解决方案更适合您。
标签: c# serialization marshalling