
我正在尝试在 C# 中序列化一个对象。我得到了对象大小并将其保存在上面屏幕截图中第 207 行的变量 size1 中。Size1 的值为 160。然后我在第 210 行使用 size1 分配了一个称为 buf 的字节数组。Buf 是一个 2 字节数组!怎么会这样?!

我正在尝试在 C# 中序列化一个对象。我得到了对象大小并将其保存在上面屏幕截图中第 207 行的变量 size1 中。Size1 的值为 160。然后我在第 210 行使用 size1 分配了一个称为 buf 的字节数组。Buf 是一个 2 字节数组!怎么会这样?!
问题就在这里
byte[] buf = new byte[size1];
byte[] buf2 = new byte[16];
buf = b.ReadBytes(...); //<----
您将替换buf为ReadBytes. 这会丢弃您的原始数组并将其替换为从返回的数组ReadBytes(在您的情况下是一个两字节数组)
ReadBytes() 返回一个byte[]. 当你写
buf = b.ReadBytes(Marshal.SizeOf(firstRecord));
然后buf指向一个完全不同的地方byte[],它等于b.ReadBytes()返回的任何东西。
看起来您正在尝试将某些对象转换为字节数组,这个答案可能会有所帮助。 将任何对象转换为字节[]