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