Есть строка из 0 и 1 , нужно сделать перевод в символы - C#
Формулировка задачи:
сделал проект, считываю строку, перевожу в байты и создаю строку
, после делаю все обратное, делю по 16 символов , считаю номер, и пытаюсь выводить в строку, в чем проблема не понимаю, работает для цифр , англ букв+ цифры , но для русских букв не работает , кто что подскажет?
код обратного преобразование из строки байтов в строку символов :
foreach (byte b in System.Text.Encoding.Unicode.GetBytes(richTextBox1.Text.ToString())) sb.Append(Convert.ToString(b, 2).PadLeft(16, '0')).Append(' ');
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??? } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д