Смена кодировки без использования 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();
}
}
}