Преобразование int-->byte-->char || string - C#

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

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

Немного запутался... Прошу распутать. Есть код, который сохраняет значения Int в файл.
73
83
72
208
184
186
это коды символов в UTF-8 (3 англ.символа, 3 русских символа) Достаю из файла следующим образом:
            string line;
 
            System.IO.StreamReader file = new System.IO.StreamReader("file.txt");
 
            byte[] outpb = new byte[10];
 
            while ((line = file.ReadLine()) != null)
            {
                int a = int.Parse(line); // делаю int
              
                byte str1 = (byte)a; // делаю byte
 
                char b2 = (char)str1; // делаю char
            }
Английские буквы/символы отображаются без проблем. Русские буквы - символом ?, прочие символы отображаются всякими рогаликами. пробовал менять исходную кодировку на ASCII, Unicode = не прокатило. Пробовал делать так:
                int a = int.Parse(line);  // получаю int
 
                byte str1 = (byte)a;    // перевожу в byte
 
                for (int i = 0; i < line.Count(); i++ )
                {
                    outpb[i] = str1;      // заталкиваю в массив byte[]
                }
 
                Console.WriteLine(Encoding.UTF8.GetString(outpb));
Тоже выводятся знаки вопроса и пр. рогалики Как правильно произвести преобразование, чтобы русские символы отображались корректно?
Полагаю, что ошибка кроется в самих кодировках, т.к. например русская буква И в UTF-8 имеет представление: 208 152, а моему скрипту на это до лампочки, т.к. он сохраняет 208 и 152 отдельно...

Решение задачи: «Преобразование int-->byte-->char || string»

textual
Листинг программы
using System;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication8
{
    public struct Program
    {
        private static void Main(string[] args)
        {
            string str = "qwertyuiopasdfghjklzxcvbnm йцукенгшщзхъфывапролджэячсмитьбю";
 
            Console.WriteLine(str);
 
 
            int[] ints = Encoding.Unicode.GetBytes(str).Select(i => (int) i).ToArray();
 
           string tmp=string.Join(" ",ints);
            Console.WriteLine(tmp);
 
            Console.WriteLine();
 
            byte[] arr = tmp.Split(' ').Select(byte.Parse).ToArray();
 
            Console.WriteLine(Encoding.Unicode.GetString(arr));
 
            Console.ReadKey();
 
        }
 
    }
 
}

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


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

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

15   голосов , оценка 4.2 из 5