//仿base64
class Base256
{
public static string CodeTable = "一乙二十丁厂七卜人入八九几儿了力乃刀又三于干亏士工土才寸下大丈与万上小口巾山千乞川亿个勺久凡及夕丸么广亡门义之尸弓己已子卫也女飞刃习叉马乡丰王井开夫天无元专云扎艺木五支厅不太犬区历尤友匹车巨牙屯比互切瓦止少日中冈贝内水见午牛手毛气升长仁什片仆化仇币仍仅斤爪反介父从今凶分乏公仓月氏勿欠风丹匀乌凤勾文六方火为斗忆订计户认心尺引丑巴孔队办以允予劝双书幻玉刊示末未击打巧正扑扒功扔去甘世古节本术可丙左厉右石布龙平灭轧东卡北占业旧帅归且旦目叶甲申叮电号田由史只央兄叼叫另叨叹四生失禾丘付仗代仙们仪白仔他斥瓜乎丛令用甩印乐";
public static bool Valid(string b256String)
{
bool valid = true;
if (b256String == null)
valid = false;
else
{
for (int i = 0; i < b256String.Length; i++)
{
if (IndexOf(b256String[i]) < 0)
{
valid = false;
break;
}
}
}
return valid;
}
public static string Encode(byte[] bytes)
{
char[] encodeString = new char[bytes.Length];
for (int i = 0; i < bytes.Length; i++)
{
int v = bytes[i];
encodeString[i] = CodeTable[v];
}
return new string(encodeString);
}
public static byte[] Decode(string b256String)
{
byte[] result = null;
if (!Valid(b256String))
{
throw new Exception("Invalid base-256 string.");
}
else
{
result = new byte[b256String.Length];
for(int i =0;i<b256String.Length;i++)
{
int index = IndexOf(b256String[i]);
result[i] = (byte)index;
}
}
return result;
}
public static int IndexOf(char b256Code)
{
int index = -1;
for (int i = 0; i < CodeTable.Length; i++)
{
if (CodeTable[i] == b256Code)
{
index = i;
break;
}
}
return index;
}
}
base256-chinese约定以及csharp源代码
最新推荐文章于 2023-10-17 21:00:00 发布