
我试图在C#中序列化一个对象。我得到了对象的大小,并将其保存在一个变量中,在上面的屏幕截图中,size1在第207行。Size1的值为160。然后,我使用size1在第210行中分配一个名为buf的字节数组。Buf是一个2字节的数组!这怎么可能?!
发布于 2013-08-14 18:25:59
问题就在这里
byte[] buf = new byte[size1];
byte[] buf2 = new byte[16];
buf = b.ReadBytes(...); //<----您将用buf的结果替换ReadBytes。它丢弃原始数组,并将其替换为从ReadBytes返回的数组(在您的示例中是两个字节数组)。
发布于 2013-08-14 18:27:32
ReadBytes()返回一个byte[]。当你写
buf = b.ReadBytes(Marshal.SizeOf(firstRecord));然后,buf指向一个完全不同的byte[],它等于返回的任何b.ReadBytes()。
发布于 2013-08-14 18:33:23
看起来,您正在尝试将某个对象转换为一个字节数组,这个答案可能会有所帮助。Convert any object to a byte[]
https://stackoverflow.com/questions/18239128
复制相似问题