Beispiel #1
0
 private void button1_Click(object sender, EventArgs e)
 {
     HaffmanGrid.DataSource = FrequencyRecord.GetFrequencyDictionary(InputMessage.Text);
     Entropy.Text           = "Entropy: " + FrequencyRecord.Entropy;
     Avg.Text      = "Avg bit/character: " + FrequencyRecord.Avg;
     EMLenght.Text = "Encoded message lenght: " + FrequencyRecord.Lenght;
 }
Beispiel #2
0
        private void button2_Click(object sender, EventArgs e)
        {
            EncodedMessage.Text  = "";
            BinaryString.Text    = "";
            ASCIIGrid.DataSource = ASCII.GetASCIIs(FrequencyRecord.GetFrequencyDictionary(InputMessage2.Text));

            foreach (var ch in InputMessage2.Text)
            {
                if (Convert.ToString(ch, 2).Length == 6)
                {
                    BinaryString.Text += "00" + Convert.ToString(Encoding.GetEncoding(CultureInfo.CurrentCulture.TextInfo.ANSICodePage).GetBytes(new char[] { ch })[0], 2);
                }
                else
                {
                    BinaryString.Text += Convert.ToString(Encoding.GetEncoding(CultureInfo.CurrentCulture.TextInfo.ANSICodePage).GetBytes(new char[] { ch })[0], 2);
                }
            }


            HamGrid.DataSource = Hamm.GetHammings(SplitString(BinaryString.Text, 4));

            foreach (var item in Hamm.GetHammings(SplitString(BinaryString.Text, 4)))
            {
                EncodedMessage.Text += item.Code;
            }
        }
Beispiel #3
0
            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());
            }