Смена кодировки без использования Encoding - C#

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

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

Задание: Выполнить перекодирование исходного текста без использования системных или других библиотек или функций, с использованием побитовых операций и операций сдвига: a. Раскодировать символ из исходной кодировки в UCS. b. Закодировать символ из UCS в конечную кодировку. Кодировки: Windows-1251 -> UTF-8 Помогите пожалуйста. Везде где смотрел делают через Encoding, а мне это недоступно по условию задания.

Решение задачи: «Смена кодировки без использования Encoding»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Text;
 
namespace ConsoleApplication182
{
    class Program
    {
        static void Main(string[] args)
        {
            var source = "мама мыла раму! :)  Ёё";
            var win1251 = Encoding.GetEncoding(1251).GetBytes(source);
            var utf8 = Win1251toUTF8(win1251);
            var str = Encoding.UTF8.GetString(utf8);
 
            Console.WriteLine("Source: " + source);
            Console.WriteLine("Result: " + source);
 
            Console.ReadLine();
        }
 
        static byte[] Win1251toUTF8(byte[] win1251)
        {
            var res = new List<byte>();
            foreach(var c in win1251)
            {
                if (c >= 192 && c <= 239) res.AddRange(new byte[] { 209, (byte)(c - 48) }); else
                if (c > 239) res.AddRange(new byte[] { 209, (byte)(c - 112) }); else
                if (c == 184) res.AddRange(new byte[] { 209, 209 }); else
                if (c == 168) res.AddRange(new byte[] { 208, 129 }); else
                res.Add(c);
            }
 
            return res.ToArray();
        }
    }
}

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


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

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

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