/// <summary> /// Zakodowywuje wiadomość do słowa kodowego /// </summary> /// <param name="errorsCorrection">liczba błędów mozliwych do skorygowania</param> /// <param name="input">wiadomość</param> /// <returns>tablicę bajtów zawierającą słowa kodowe</returns> public static byte[] Encode(int errorsCorrection, Stream input) { return(errorsCorrection switch { 1 => SingleECC.Encode(input), // korekcja 1 błędu 2 => DoubleECC.Encode(input), // korekcja 2 błędów _ => throw new Exception("Unsupported errors correction mode") // korekcje większej ilości błędów nie obsługujemy });
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) }