Есть строка из 0 и 1 , нужно сделать перевод в символы - C#

Узнай цену своей работы

Формулировка задачи:

сделал проект, считываю строку, перевожу в байты и создаю строку
 foreach (byte b in System.Text.Encoding.Unicode.GetBytes(richTextBox1.Text.ToString()))
                sb.Append(Convert.ToString(b, 2).PadLeft(16, '0')).Append(' ');
, после делаю все обратное, делю по 16 символов , считаю номер, и пытаюсь выводить в строку, в чем проблема не понимаю, работает для цифр , англ букв+ цифры , но для русских букв не работает , кто что подскажет? код обратного преобразование из строки байтов в строку символов :
string s;
            s = richTextBox2.Text.ToString();
 
            for (int n = 1; n <= (s.Length / 16); n++)
            {
                string s0 = "";
                for (int i = (n-1)*16; i < (n-1)*16+16;i++ )
                {
                    s0 += s[i];
                }
 
                string s3="";
                for (int j = 0; j < 16; j++)
                {
                    s3 = s0[j] + s3;
 
                }

                int nom = 1;
                int chislo=0;
                for (int j = 1; j <= 16;j++ )
                {
                    if (s3[j-1] == '1') chislo = chislo + nom;
                    nom *= 2;
 
                }
 char c = Convert.ToChar(k);
richTextBox2.Text = c.ToString();
}

Решение задачи: «Есть строка из 0 и 1 , нужно сделать перевод в символы»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            List<byte> lst = new List<byte>();
 
            string testString = "Я русский символ. 2016. John Cena"; //Тестовая строка
            byte[] unicodeBytes = Encoding.Unicode.GetBytes(testString); //Получаем байты строки в кодировке UTF-16 (Unicode)
            using (BinaryWriter br = new BinaryWriter(File.OpenWrite(@"E:\2.txt"))) //Записываем байты в файл
            {
                br.Write(unicodeBytes); //Сама запись
            }
 
 
            using (StreamWriter sw = new StreamWriter(File.OpenWrite(@"E:\3.txt"))) //Записываем в файл те же байты но в бинарном виде (001010100)
            {
                for (int i = 0; i < unicodeBytes.Length; i++) //проходимся по массиву байтов
                {
                    sw.WriteLine(Convert.ToString(unicodeBytes[i], 2)); //Преобразуем каждый байт в бинарную строку и записываем в файл
                }
            }
            //Тут мы получили файл содержащий двоичную кодировку нашей строки в кодировке UTF-16
            using (StreamReader sr = new StreamReader(@"E:\3.txt")) //открываем файл для чтения
            {
                while (!sr.EndOfStream)
                {
                    lst.Add(Convert.ToByte(sr.ReadLine(), 2)); //преобразуем каждую считанную бинарную строку обратно в байт и загоняем в список байтов
                }
            }
            string r = Encoding.Unicode.GetString(lst.ToArray()); //получаем читабельую строку из массива байтов
            Console.WriteLine(r);
            Console.ReadKey(); //PROFIT???
 
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5
Похожие ответы