42 lines
1.2 KiB
C#
42 lines
1.2 KiB
C#
using System.Text;
|
|
|
|
namespace BaseNcoding
|
|
{
|
|
public class Base256 : Base
|
|
{
|
|
public const string DefaultAlphabet = "!#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀŁł";
|
|
public const char DefaultSpecial = (char)0;
|
|
|
|
public override bool HasSpecial => false;
|
|
|
|
public Base256(string alphabet = DefaultAlphabet, char special = DefaultSpecial,
|
|
Encoding textEncoding = null)
|
|
: base(256, alphabet, special, textEncoding)
|
|
{
|
|
}
|
|
|
|
public override string Encode(byte[] data)
|
|
{
|
|
var result = new char[data.Length];
|
|
|
|
for (int i = 0; i < data.Length; i++)
|
|
result[i] = Alphabet[data[i]];
|
|
|
|
return new string(result);
|
|
}
|
|
|
|
public override byte[] Decode(string data)
|
|
{
|
|
unchecked
|
|
{
|
|
byte[] result = new byte[data.Length];
|
|
|
|
for (int i = 0; i < data.Length; i++)
|
|
result[i] = (byte)InvAlphabet[data[i]];
|
|
|
|
return result;
|
|
}
|
|
}
|
|
}
|
|
}
|