[转]使用C#实现长整型向任意编码的转换和逆转换
2012-09-28 13:18
495 查看
usingSystem;
[code]usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespaceConsoleApplication1
{
publicclassNumber
{
publicstringCharacters
{
get;
set;
}
publicintLength
{
get
{
if(Characters!=null)
returnCharacters.Length;
else
return0;
}
}
publicNumber()
{
Characters="0123456789";
}
publicNumber(stringcharacters)
{
Characters=characters;
}
///<summary>
///数字转换为指定的进制形式字符串
///</summary>
///<paramname="number"></param>
///<returns></returns>
publicstringToString(longnumber)
{
List<string>result=newList<string>();
longt=number;
while(t>0)
{
varmod=t%Length;
t=Math.Abs(t/Length);
varcharacter=Characters[Convert.ToInt32(mod)].ToString();
result.Insert(0,character);
}
returnstring.Join("",result.ToArray());
}
///<summary>
///指定字符串转换为指定进制的数字形式
///</summary>
///<paramname="str"></param>
///<returns></returns>
publiclongFromString(stringstr)
{
longresult=0;
intj=0;
foreach(varchinnewstring(str.ToCharArray().Reverse().ToArray()))
{
if(Characters.Contains(ch))
{
result+=Characters.IndexOf(ch)*((long)Math.Pow(Length,j));
j++;
}
}
returnresult;
}
}
classProgram
{
staticvoidPrint(longnumber,Numberadapter)
{
Console.WriteLine("输入数字:{0}",number);
Console.WriteLine("规则:{0}\t\t进制:{1}进制",adapter.Characters,adapter.Length);
varnumtostr=adapter.ToString(number);
Console.WriteLine("转换结果:{0}",numtostr);
varstrtonum=adapter.FromString(numtostr);
Console.WriteLine("逆向转换结果:{0}",strtonum);
Console.WriteLine();
Console.WriteLine("============无聊的分割线============");
Console.WriteLine();
}
staticvoidMain(string[]args)
{
//传统的2进制
Numbern1=newNumber("01");
//传统的8进制
Numbern2=newNumber("01234567");
//传统的16进制
Numbern3=newNumber("0123456789ABCDEF");
//自定义编码的N进制,这个可以用来做验证码?
Numbern4=newNumber("爹妈说名字太长躲在树后面会被部落发现");
//山寨一个短网址
Numbern5=newNumber("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
Print(65535,n1);
Print(65535,n2);
Print(65535,n3);
Print(65535,n4);
Print(165535,n5);
Console.ReadKey();
}
}
}
原文地址:/article/5262060.html
[/code]
相关文章推荐
- C#实现整型数据字任意编码任意进制的转换和逆转换简介
- C# 使用 GDI+ 实现添加中心旋转(任意角度)的文字
- C# 使用WM_NCLBUTTONDOWN消息实现任意位置移动窗体
- 使用C#实现身份证号码15位到18位的转换
- 在C#中使用.net3.0和Openxml在服务器端实现数据格式转换成OpenxmlExcel
- 实现SpringMVC中使用@Responsebody注解返回任意POJO对象转换成JSON
- C# 泛型 与 反射 实现 任意类型间的类型转换
- 使用C#实现阿拉伯数字到大写中文的转换
- 使用C#.NET来实现 XML+XSL=>HTML的转换
- 使用iconv命令轻松实现linux下字符集编码的转换
- 使用iconv命令轻松实现linux下字符集编码的转换
- 使用iconv命令轻松实现linux下字符集编码的转换
- 使用iconv命令轻松实现linux下字符集编码的转换
- 使用C#实现实体类和XML相互转换
- (转)C#.NET使用TTS引擎实现文语转换
- 使用iconv命令轻松实现linux下字符集编码的转换
- 使用C#实现实体类和XML相互转换
- C#.NET使用TTS引擎实现文语转换
- 使用C#实现阿拉伯数字到大写中文的转换
- JS使用base64编码实现小文件上传PHP接收后转换