public byte[] ToArray() { MemoryStream ms = new MemoryStream(); UruStream s = new UruStream(ms); ulong bit = 1; Fields f = NodeFields; s.WriteULong((ulong)f); while (bit != 0 && bit <= (ulong)f) { switch ((f & (Fields)bit)) { case Fields.kBlob_1: s.WriteInt(fBlob[0].Length); s.WriteBytes(fBlob[0]); break; case Fields.kBlob_2: s.WriteInt(fBlob[1].Length); s.WriteBytes(fBlob[1]); break; case Fields.kCreateAgeName: s.WriteUnicodeStringV32(fCreateAgeName); break; case Fields.kCreateAgeUuid: s.WriteBytes(fCreateAgeUuid.ToByteArray()); break; case Fields.kCreateTime: s.WriteUInt(ToUnixTime(fCreateTime)); break; case Fields.kCreatorIdx: s.WriteUInt(fCreatorIdx.Value); break; case Fields.kCreatorUuid: s.WriteBytes(fCreatorUuid.ToByteArray()); break; case Fields.kInt32_1: s.WriteInt(fInt32[0].Value); break; case Fields.kInt32_2: s.WriteInt(fInt32[1].Value); break; case Fields.kInt32_3: s.WriteInt(fInt32[2].Value); break; case Fields.kInt32_4: s.WriteInt(fInt32[3].Value); break; case Fields.kIString64_1: s.WriteUnicodeStringV32(fIString64[0]); break; case Fields.kIString64_2: s.WriteUnicodeStringV32(fIString64[1]); break; case Fields.kModifyTime: s.WriteUInt(ToUnixTime(fModifyTime)); break; case Fields.kNodeIdx: s.WriteUInt(fIdx); break; case Fields.kNodeType: s.WriteUInt((uint)fNodeType); break; case Fields.kString64_1: s.WriteUnicodeStringV32(fString64[0]); break; case Fields.kString64_2: s.WriteUnicodeStringV32(fString64[1]); break; case Fields.kString64_3: s.WriteUnicodeStringV32(fString64[2]); break; case Fields.kString64_4: s.WriteUnicodeStringV32(fString64[3]); break; case Fields.kString64_5: s.WriteUnicodeStringV32(fString64[4]); break; case Fields.kString64_6: s.WriteUnicodeStringV32(fString64[5]); break; case Fields.kText_1: s.WriteUnicodeStringV32(fText[0]); break; case Fields.kText_2: s.WriteUnicodeStringV32(fText[1]); break; case Fields.kUInt32_1: s.WriteUInt(fUInt32[0].Value); break; case Fields.kUInt32_2: s.WriteUInt(fUInt32[1].Value); break; case Fields.kUInt32_3: s.WriteUInt(fUInt32[2].Value); break; case Fields.kUInt32_4: s.WriteUInt(fUInt32[3].Value); break; case Fields.kUuid_1: s.WriteBytes(fUuid[0].ToByteArray()); break; case Fields.kUuid_2: s.WriteBytes(fUuid[1].ToByteArray()); break; case Fields.kUuid_3: s.WriteBytes(fUuid[2].ToByteArray()); break; case Fields.kUuid_4: s.WriteBytes(fUuid[3].ToByteArray()); break; } bit <<= 1; } byte[] buf = ms.ToArray(); s.Close(); ms.Close(); return buf; }