C#实现整型数据字任意编码任意进制的转换和逆转换简介
2014-12-01 09:46
686 查看
又是个闲极无聊的下午,无聊写了这么个东西,可以实现任意整数按照任意编码和任意进制的转换和逆向转换。
用途:
恶。。这个我也不清楚,目前看来可以用来做验证码,用来做短网址,其他?暂时没有想到。
上图先:
实现如下:
又是个闲极无聊的下午,无聊写了这么个东西,可以实现任意整数按照任意编码和任意进制的转换和逆向转换。
用途:
恶。。这个我也不清楚,目前看来可以用来做验证码,用来做短网址,其他?暂时没有想到。
上图先:
实现如下:
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(); } } }
相关文章推荐
- [转]使用C#实现长整型向任意编码的转换和逆转换
- C# 控制台输入输出非字符串类型数据的方法[进制数字转换为八进制数字]
- (C语言)实现对任意浮点型数据从十进制到二进制的转换
- 任意进制转换的递归实现
- 利用递归方法实现任意进制转换的方法
- java实现任意进制的互相转换
- Python实现任意进制之间的转换
- PCQQ的编码进制转换大集,超实用[c#]
- C#将十六进制的文本转换到整型数据
- c#实现数据集合转换为csv文本
- php实现将任意进制数转换成10进制的方法
- mini2440 UART实现串口接收后转换为整型数据
- 在C#中使用.net3.0和Openxml在服务器端实现数据格式转换成OpenxmlExcel
- C# 向DataTable中插入伪造DataTable数据及实现DataTable行列转换
- C#中各个进制数据之间的相互转换
- 任意进制间的转换(用c语言实现)
- C#各种进制之间数据转换二进制、八进制、十进制、十六进制
- 通用进制转换工具,可实现进制之间的任意转换
- 在C#中将任意数值类型数据与字节数组相互转换的一个方法
- 超级(无限)大的 --- 整型10进制数据与16进制数据相互转换