public byte[] ToBytes() { MemoryStream table = new MemoryStream(); if (fakeStruct == null) { table.Write(Zreo, 0, 4); } else { byte[] buf = fakeStruct.ToBytes(); Int32 len = buf.Length; table.Write(len.ToBytes(), 0, 4); table.Write(buf, 0, len); } table.Write(max.ToBytes(), 0, 4); MemoryStream ms = new MemoryStream(); Int32 offset = 0; for (int i = 0; i < max; i++) { var buf = GetBytes(buff[i].obj); table.Write(buff[i].rc.ToBytes(), 0, 2); //引用计数 table.Write(buff[i].type.ToBytes(), 0, 2); //数据类型 table.Write(buff[i].size.ToBytes(), 0, 4); //数据结构体长度 table.Write(offset.ToBytes(), 0, 4); //数据偏移地址 if (buf == null) { ms.Write(Zreo, 0, 4); offset += 4; } else { Int32 len = buf.Length; ms.Write(len.ToBytes(), 0, 4); ms.Write(buf, 0, len); offset += len + 4; } } byte[] tmp = ms.ToArray(); table.Write(tmp, 0, tmp.Length); tmp = table.ToArray(); ms.Dispose(); table.Dispose(); return(tmp); }