Есть строка из 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???
}
}
}