public static BinaryTreeNode <T> FromByteArray(byte[] Data) { BinaryTreeNodeSaver <T> res = new BinaryTreeNodeSaver <T>(); ExtBitArray Bits = new ExtBitArray(Data); Bits.Seek(0); int OffsetLen = Bits.Read(5); int DataLen = Bits.Read(5); res.Weight = 0; List <int> Offsets = new List <int>(); Offsets.Add(Bits.Read(OffsetLen)); Offsets.Add(Bits.Read(OffsetLen)); res.Weight = 0; int Weight = 0; for (int i = 0; i < Offsets.Count; i++) { if (Offsets[i] == 0) { continue; } Weight += Offsets[i]; Bits.Seek((10 + Weight) * 8); Offsets.Add(Bits.Read(OffsetLen)); } return(res); }