public static void Main()
var enc = new TestEncoding();
var bytes = enc.GetBytes("helloworld");
var result = enc.GetChars(bytes);
Console.WriteLine(result);
public class TestEncoding : Encoding
private char[] conversionArray = new[]{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
public override int GetByteCount(char[] chars, int index, int count)
public override int GetBytes(char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex)
for (var i = 0; i < charCount; i++)
bytes[byteIndex + i] = GetByte(chars[charIndex + i]);
public override int GetCharCount(byte[] bytes, int index, int count)
public override int GetChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex)
for (var i = 0; i < byteCount; i++)
chars[charIndex + i] = conversionArray[bytes[byteIndex + i]];
public override int GetMaxByteCount(int charCount)
public override int GetMaxCharCount(int byteCount)
private byte GetByte(char c)
for (var i = 0; i < conversionArray.Length; i++)
if (conversionArray[i] == c)
throw new Exception("Invalid character");
private char GetChar(byte b)
return conversionArray[b];