Превращение десятичных значений символов в двоичном коде в символ - PullRequest
0 голосов
/ 29 декабря 2018

Я работаю над проектом, который превращает сообщение в десятичные значения ascii ... эта сторона не важна, проблема в том, что она должна прочитать его обратно, поэтому перевод в основном такой:

 if (textBox1.Text.Contains("a"))
       { 
                textBox3.Text = textBox3.Text.Replace("a", "97");
            }
            if (textBox1.Text.Contains("b"))
            { 
                textBox3.Text = textBox3.Text.Replace("b", "98");
            }
.
.
.
        if (textBox1.Text.Contains("Ğ"))
        {
            textBox3.Text = textBox3.Text.Replace("Ğ", "286");
        }
        if (textBox1.Text.Contains("ş"))
        {
            textBox3.Text = textBox3.Text.Replace("ş", "351");
        }

этот перевод работает отлично.но перевод обратно - проблема.мой метод обратного перевода в двух словах:

        if (sonmesajBinary.Text.Contains("97"))
        {
            okunanMesaj.Text = okunanMesaj.Text.Replace("97", "a");
        }

        if (sonmesajBinary.Text.Contains("98"))
        {
            okunanMesaj.Text = okunanMesaj.Text.Replace("98", "b");
        }

        if (sonmesajBinary.Text.Contains("99"))
        {
            okunanMesaj.Text = okunanMesaj.Text.Replace("99", "c");
        }

, и проблема в том, скажем, вывод равен 140, но он также включает в себя "40", так что компьютер ошибается.Это моя проблема, и мне нужна твоя помощь :).Я немного любопытен, извиняюсь за свои ошибки, мне 17 лет, и английский не мой родной язык.примечание: значения ascii могут быть не настоящими, а только для примера.

Ответы [ 2 ]

0 голосов
/ 29 декабря 2018

Там много проблем с вашим кодом.Проверка Contains вернет true для любого числа вхождений символа в любом месте.Вы регистрируетесь в textBox1 и заменяете в textBox3.Вы проверяете каждого известного вам персонажа, но возможно, что есть и другие!Существуют более простые способы получения байтового / int / числового эквивалента вашего символа на основе кодировки вашего ввода.

Вот элементарное решение, основанное на комментариях, следующих за вопросом.Однако вам нужно больше узнать о кодовых страницах, а затем о кодировках.Это только часть операции Encrypt .Я уверен, что вы можете выяснить, как заменить содержимое, а затем также Расшифровать в пригодный для использования формат.Ура!Удачного кодирования.

        static void Main(string[] args)
        {
            string fileContents = "";
            int encryptKey = 3; // Consider getting this from args[0], etc.
            using (FileStream fs = File.OpenRead(@"C:\Users\My\Desktop\testfile.txt"))
            using (TextReader tr = new StreamReader(fs))
            {
                fileContents = tr.ReadToEnd();
            }
            byte[] asciiBytesOfFile = Encoding.ASCII.GetBytes(fileContents);
            int[] encryptedContents = Encrypt(encryptKey, asciiBytesOfFile);
        }

        private static int[] Encrypt(int encryptKey, byte[] asciiBytesOfFile)
        {
            int[] encryptedChars = new int[asciiBytesOfFile.Length];
            for (int i = 0; i < asciiBytesOfFile.Length; i++)
            {
                encryptedChars[i] = encryptKey ^ asciiBytesOfFile[i];
            }
            return encryptedChars;
        }
0 голосов
/ 29 декабря 2018

это было исправлено благодаря Тому Блоджету, все, что мне нужно было сделать - это dellimite.Поэтому я добавил 0 к началу каждых двухзначных значений: D

 if (textBox1.Text.Contains("a"))
       { 
                textBox3.Text = textBox3.Text.Replace("a", "097");
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...