示例#1
0
        public byte[] Save()
        {
            var frequencies = Frequencies.ToList();

            var frequencyTable = new byte[frequencies.Count * 8];

            var count = 0;

            foreach (var item in frequencies)
            {
                Buffer.BlockCopy(BitConverter.GetBytes(item.Frequency), 0, frequencyTable, count * 8, 4);
                Buffer.BlockCopy(BitConverter.GetBytes((int)item.Character), 0, frequencyTable, count * 8 + 4, 4);

                count++;
            }

            var data = new byte[8 + frequencyTable.Length + Data.Length];

            Buffer.BlockCopy(BitConverter.GetBytes(frequencies.Count), 0, data, 0, 4);
            Buffer.BlockCopy(BitConverter.GetBytes(OriginalLength), 0, data, 4, 4);
            Buffer.BlockCopy(frequencyTable, 0, data, 8, frequencyTable.Length);
            Buffer.BlockCopy(Data, 0, data, 8 + frequencyTable.Length, Data.Length);

            return(data);
        }