实现如下:

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#实现整型数据字任意编码任意进制的转换和逆转换的更多相关文章

  1. C# 整型数和浮点型数的进制转换

    1.十进制转二进制 /// <summary> /// 十进制转二进制 /// </summary> public class Convert10To2 { /// <s ...

  2. ColorUtil【Color工具类(color整型、rgb数组、16进制互相转换)】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 主要用于color整型.rgb数组.16进制互相转换(-12590395 <--> #3FE2C5 <--> ...

  3. java 整型相除得到浮点型

    public class TestFloatOrDouble { public static void main(String[] args) { Point num1 = new Point(84, ...

  4. 【CSAPP笔记】2. 整型运算

    现在想补补推荐这本书的理由. Most books on systems-computer architecture, compilers, operating systems, and networ ...

  5. java中大整型BigInteger及setBit和testBit方法

    最近在修改公司之前的项目,在项目中遇到了权限校验的问题,代码中出现了BigInteger的setBit()testBit()方法,之前未接触过,所以了解了下BigInteger. 在Java中,由CP ...

  6. Python入门篇-基础数据类型之整型(int),字符串(str),字节(bytes),列表(list)和切片(slice)

    Python入门篇-基础数据类型之整型(int),字符串(str),字节(bytes),列表(list)和切片(slice) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Py ...

  7. 写出将字符串中的数字转换为整型的方法,如:“as31d2v”->312,并写出相应的单元测试,正则去掉非数值、小数点及正负号外的字符串

    写出将字符串中的数字转换为整型的方法,如:"as31d2v"->312,并写出相应的单元测试,输入超过int范围时提示不合法输入. public struct Convert ...

  8. 【C语言入门教程】2.3 整型数据

    没有小数位或指数的数据类型被称为整型数据,根据使用方法的分类,整型数据可分为整型常量和整型变量.根据定义或显示的数制分类,可分为十进制.八进制和十六进制. 2.3.1 整型常量 整型常量是在运算中不可 ...

  9. 基础数据类型:整型int、布尔值bool、字符串str、与for循环

    1.整型 int() p2 long 长整型 p3 全部都是整型 2.布尔值 bool() True --- int() int(True) int() --- True bool(int) 注意点: ...

随机推荐

  1. 运用第一性原理探寻AI本质

    摘要:使用第一性原理探讨理解AI本质. 文章来源:宜信技术学院|宜信支付结算团队技术分享第二期-支付结算机器学习技术团队负责人 刘创 分享<AI与第一性原理> 分享者:宜信支付结算机器学习 ...

  2. The All-in-One Note

    基础 操作系统 I/O 模型 阻塞式 I/O 模型(blocking I/O) 描述:在阻塞式 I/O 模型中,应用程序在从调用 recvfrom 开始到它返回有数据报准备好这段时间是阻塞的,recv ...

  3. electron快捷键

    我们分为在主进程中注册快捷键和在渲染进程中注册快捷键 在主进程中我们有两种方式 一 利用[Menu]来模拟快捷键,只有app获得焦点时才生效,很少使用 const { Menu, MenuItem } ...

  4. Leetcode Tags(3)String(TODO)

    一.Easy 696 Count Binary Substrings Input: "00110011" Output: 6 Explanation: There are 6 su ...

  5. Day 3,学习的知识点

    年龄 如何判断是否未成年人 age = input('请输入你的年龄:')#input=输入age = int(age)#int=转化为整型if age < 18:    print('小妹妹你 ...

  6. 媒体查询文字大小.html

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. TCP连接的关闭

    原文地址:http://lib.csdn.net/article/computernetworks/17264   TCP连接的关闭有两个方法close和shutdown,这篇文章将尽量精简的说明它们 ...

  8. BOOL,int,float,指针变量 与“零值”比较的if语句

    分别给出BOOL,int,float,指针变量 与“零值”比较的 if 语句(假设变量名为var) 解答: BOOL型变量:if(!var) int型变量: if(var==0) float型变量: ...

  9. python argparse:命令行参数解析详解

    简介 本文介绍的是argparse模块的基本使用方法,尤其详细介绍add_argument内建方法各个参数的使用及其效果. 本文翻译自argparse的官方说明,并加上一些笔者的理解 import a ...

  10. SpringBoot2.1.9+dubbo2.7.3+Nacos1.1.4构建你的微服务体系

    简单几步使用最新版本的DUBBO构建你的微服务体系 NACOS注册中心 从github下载最新版本的nacos 上传至服务器并解压 单机启动sh startup.sh -m standalone na ...