C#实现整型数据字任意编码任意进制的转换和逆转换简介
来源:互联网 发布:win7建立网络共享 编辑:程序博客网 时间:2024/06/02 05:39
又是个闲极无聊的下午,无聊写了这么个东西,可以实现任意整数按照任意编码和任意进制的转换和逆向转换。
用途:
恶。。这个我也不清楚,目前看来可以用来做验证码,用来做短网址,其他?暂时没有想到。
上图先:
实现如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { public class Number { public string Characters { get; set; } public int Length { get { if (Characters != null) return Characters.Length; else return 0; } } public Number() { Characters = "0123456789"; } public Number(string characters) { Characters = characters; } /// <summary> /// 数字转换为指定的进制形式字符串 /// </summary> /// <param name="number"></param> /// <returns></returns> public string ToString(long number) { List<string> result = new List<string>(); long t = number; while (t > 0) { var mod = t % Length; t = Math.Abs(t / Length); var character = Characters[Convert.ToInt32(mod)].ToString(); result.Insert(0, character); } return string.Join("", result.ToArray()); } /// <summary> /// 指定字符串转换为指定进制的数字形式 /// </summary> /// <param name="str"></param> /// <returns></returns> public long FromString(string str) { long result = 0; int j = 0; foreach (var ch in new string(str.ToCharArray().Reverse().ToArray())) { if (Characters.Contains(ch)) { result += Characters.IndexOf(ch) * ((long)Math.Pow(Length, j)); j++; } } return result; } } class Program { static void Print(long number, Number adapter) { Console.WriteLine("输入数字:{0}", number); Console.WriteLine("规则:{0}\t\t进制:{1}进制", adapter.Characters,adapter.Length); var numtostr = adapter.ToString(number); Console.WriteLine("转换结果:{0}", numtostr); var strtonum = adapter.FromString(numtostr); Console.WriteLine("逆向转换结果:{0}", strtonum); Console.WriteLine(); Console.WriteLine("============ 无聊的分割线 ============"); Console.WriteLine(); } static void Main(string[] args) { //传统的2进制 Number n1 = new Number("01"); //传统的8进制 Number n2 = new Number("01234567"); //传统的16进制 Number n3 = new Number("0123456789ABCDEF"); //自定义编码的N进制,这个可以用来做验证码? Number n4 = new Number("爹妈说名字太长躲在树后面会被部落发现"); //山寨一个短网址 Number n5 = new Number("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"); Print(65535, n1); Print(65535, n2); Print(65535, n3); Print(65535, n4); Print(165535, n5); Console.ReadKey(); } } }
0 0
- C#实现整型数据字任意编码任意进制的转换和逆转换简介
- 任意进制转换的递归实现
- 十进制和任意进制的转换
- C#中使用进制转换思想对字符串进行任意进制任意字典的加密和解密
- 任意的进制转换
- 任意的进制转换
- 任意进制的转换
- 任意进制的转换
- 任意的进制转换
- COM组件:完成任意进制到任意进制的转换
- 原创:字符串和语句逆转的几种方式,可以任意组合,java实现
- 任意进制转换
- 任意进制转换
- 任意进制转换
- 任意进制转换
- 任意进制转换
- 任意进制转换!!!
- 任意进制转换
- HTML解析利器HtmlAgilityPack
- Spring MVC简介
- 文件属性
- su - oracle和su oracle的区别
- 预防用户流失哪家强?Testin崩溃分析秒杀Flurry
- C#实现整型数据字任意编码任意进制的转换和逆转换简介
- javascript事件处理中Event对象(键盘事件和鼠标事件)实例
- 安波_多智能体系统研究进展与挑战
- [DP]Longest Increasing Subsequence
- Python 3中套接字编程中遇到TypeError: 'str' does not support the buffer interface的解决办法
- 整合Hadoop2.2.0+HBase0.96+Hive0.12+MySql集群
- 2013 Asia Hangzhou Regional Contest(HDU 4770 4771 4772 )
- soundPool常用属性
- Determining if a View is Hardware Accelerated