0

奇怪问题截图

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

4

3 回答 3

8

问题就在这里

byte[] buf = new byte[size1];
byte[] buf2 = new byte[16];
buf = b.ReadBytes(...); //<----

您将替换bufReadBytes. 这会丢弃您的原始数组并将其替换为从返回的数组ReadBytes(在您的情况下是一个两字节数组)

于 2013-08-14T18:25:59.890 回答
4

ReadBytes() 返回一个byte[]. 当你写

buf = b.ReadBytes(Marshal.SizeOf(firstRecord));

然后buf指向一个完全不同的地方byte[],它等于b.ReadBytes()返回的任何东西。

于 2013-08-14T18:27:32.087 回答
0

看起来您正在尝试将某些对象转换为字节数组,这个答案可能会有所帮助。 将任何对象转换为字节[]

于 2013-08-14T18:33:23.080 回答