C#字节数组未正确分配

时间:2013-08-14 18:09:07

标签: c# serialization allocation

Screenshot of weird problem

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

3 个答案:

答案 0 :(得分:8)

问题出在这里

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

您正在使用buf的结果替换ReadBytes。抛弃原始数组并将其替换为从ReadBytes返回的数组(在您的情况下是一个双字节数组)

答案 1 :(得分:4)

ReadBytes()返回byte[]。当你写

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

然后buf指向一个完全不同的byte[],它等于返回的b.ReadBytes()

答案 2 :(得分:0)

看起来你正在尝试将某个对象转换为字节数组,这个答案可能有所帮助。 Convert any object to a byte[]