private void Button_Click(object sender, RoutedEventArgs e) { Stream source = null; if (FileSelectRadio.IsChecked.GetValueOrDefault()) { source = new FileStream(inputFileName, FileMode.Open, FileAccess.Read); } else if (BitsSelectRadio.IsChecked.GetValueOrDefault()) { source = new MemoryStream(BitsUtils.ToBinary(BitsTextBox.Text)); } else { throw new Exception("Source not specified"); } int mode = 0; if (DECCRadio.IsChecked.GetValueOrDefault()) { mode = 2; } else if (SECCRadio.IsChecked.GetValueOrDefault()) { mode = 1; } else { throw new Exception("Mode not specified"); } if (FileOutputCheckBox.IsChecked.GetValueOrDefault()) { SaveFileDialog dialog = new SaveFileDialog(); if (dialog.ShowDialog() == true) { using (var fs = new FileStream(dialog.FileName, FileMode.Create, FileAccess.Write)) { ECC.Decode(mode, source, fs); } } } else { OutputText.Document.Blocks.Clear(); byte[] encoded = Telekom.ECC.Decode(mode, source); for (int i = 0; i < encoded.Length; i++) { OutputText.AppendText(Convert.ToString(encoded[i], 2).PadLeft(8, '0')); } } source.Close(); }
static void Main(string[] args) { var str = "1101000110"; // wiadomość do zakodowania (10 bitów) var bytes = BitsUtils.ToBinary(str); // konwersja do postaci bitowej using MemoryStream ms = new MemoryStream(bytes); var encoded = Telekom.ECC.Encode(1, ms); // Zakodowanie wiadomości do słowa kodowego BitVector vector = new BitVector(encoded); vector.SwitchBit(3); // zamiana 3 bitu (pierwsze słowo kodowe) vector.SwitchBit(12); // zamiana 12 bitu (drugie słowo kodowe) using MemoryStream ms1 = new MemoryStream(encoded); var docoded = SingleECC.Decode(ms1); // Odkodowanie słowa kodowego (i korekcja błędów) }