public static FrequencyRecord[] GetFrequencyDictionary(string text) { var result = new List <FrequencyRecord>(); var huffmanTree = new HuffmanTree(); huffmanTree.Build(text); _entropy = 0; for (int i = 0; i < huffmanTree.Frequencies.Count; i++) { var record = new FrequencyRecord(); record._char = huffmanTree.Frequencies.ElementAt(i).Key; record._freq = huffmanTree.Frequencies.ElementAt(i).Value; record._freqPercent = Math.Round(record._freq / ((float)text.Length), 2); foreach (var item in huffmanTree.EncodeChar(record._char)) { record._code += (item ? 1 : 0); } result.Add(record); _entropy += Math.Round((-(result[i]._freqPercent * Math.Log(result[i]._freqPercent, 2))), 2); } BitArray encoded = huffmanTree.Encode(text); Console.Write("Encoded: "); var str = ""; foreach (bool bit in encoded) { str += (bit ? 1 : 0); } _avg = Math.Round((float)str.Length / (float)text.Length, 2); _lenght = str.Length; return(result.ToArray()); }