介绍

此类库支持2(二进制)到36之间任意进制的转换。

类库提供了一些常见的转换(如二进制到十进制),也支持高级的转换(如20进制到5进制)

快速使用:内置转换器

  • Convert.BinToDec.Convert()
  • Convert.BinToHex.Convert()
  • Convert.BinToOct.Convert()
  • Convert.DecToBin.Convert()
  • Convert.DecToHex.Convert()

允许所有的转换组合使用二进制、八进制、十进制和十六进制。例如:

//将 FFF(hex)转化为二进制
string binary = Converter.HexToBin.Convert("FFFF");


高级功能:自定义转化器

除了内置的静态转换器,您还可以自定义转换。例如:

// 将 FFFF (hex) 转化为5:
string base5 = Converter.Convert(NumberBases.Hexadecimal, 5, "FFFF");

主要代码:

    /// <summary>/// 常见的进制转换/// </summary>public enum NumberBases{Binary = 2,//二进制Octal = 8,//八进制Decimal = 10,//十进制Hexadecimal = 16//十六进制}
        /// <summary>/// 返回用于在指定的编号方案中使用的字符/// </summary>/// <param name="scheme"></param>/// <returns></returns>private static string  GetCharactersForNumberingScheme(NumberingSchemes scheme){string characters;switch(scheme){case NumberingSchemes.AToZ:characters = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ";break;case NumberingSchemes.ZeroToZ:characters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";break;default:throw new ArgumentOutOfRangeException("scheme");}return characters;}/// <summary>/// 将指定的数转化为10进制/// </summary>/// <param name="value"></param>/// <param name="fromBase"></param>/// <param name="characters"></param>/// <param name="maxFromSchemeCharacter"></param>/// <returns></returns>private static long ConvertToBase10(string value,int fromBase,string characters,int maxFromSchemeCharacter){StringBuilder fromValue = new StringBuilder(value);int power = 0;long result = 0;while(fromValue.Length>0){int index = Array.IndexOf<char>(characters.ToCharArray(), fromValue[fromValue.Length - 1]);if (index < 0)throw new FormatException("Unsupported character in value string");if (index >= maxFromSchemeCharacter)throw new FormatException("Value contains character not valid for number base");result += (index * (long)Math.Pow(fromBase, power));//溢出检查if (result < 0)throw new OverflowException();fromValue.Length--;power++;}return result;}/// <summary>/// 将指定的字符从10进制转化为指定的进制/// </summary>/// <param name="value"></param>/// <param name="toBase"></param>/// <param name="characters"></param>/// <returns></returns>private static string ConvertFromBase10(long value,int toBase,string characters){StringBuilder builer = new StringBuilder();while(value>0){int remainder = (int)(value % toBase);builer.Insert(0, characters[remainder]);value /= toBase;}return builer.ToString();}

完整代码下载:

点击打开链接

DEMO:

            try{int fromBase = int.Parse(DropDownList1.SelectedValue);int toBase = int.Parse(DropDownList2.SelectedValue);TextBox3.Text = Converter.Convert(fromBase, toBase, TextBox2.Text);}catch (Exception ex){TextBox3.Text = ex.Message;}

任意进制转换(转化器,算法,类)相关推荐

  1. 任意进制转换java_Java 任意进制转换(两种方式)

    本文提供两种Java实现任意进制转换的方法: 方法一:利用 Integer 实现进制转换 1. Integer类的方法toBinaryString(),Integer.toOctalString(), ...

  2. c语言进制转换pdf下载,C语言实现任意进制转换.doc

    C语言实现任意进制转换.doc includestdio.h#includemath.h#includestring.hvoid dtox(double num,int jz)char xnum100 ...

  3. 任意进制转换的递归实现

    任意进制转换的递归实现 原始链接:http://weolee.spaces.live.com/blog/cns!52FBB34F02E029D9!650.entry www.163online.cn ...

  4. 在线2-36任意进制转换工具

    在线2-36任意进制转换工具 在线2-36任意进制转换工具 本工具支持将数字从在2-36进制中任意进制间相互转换,只支持整数,纯客户端实时计算. https://tooltt.com/hex/

  5. 任意进制转换成十进制间互化(ASCII码法)(C/C++)

    目录 1 最早的版本(C) 2  针对上面的问题进行改进(C++) 2.1  任意进制转换成十进制(运用字符串) 2.2  十进制转换成任意进制(运用数组逆序存储+取模作除法) 3  ASCII码参考 ...

  6. Java实现任意进制转换拓展进制转换计算器

    JAVA实现蓝桥杯基础练习十六进制转换八进制-----------拓展进制转换计算器 这个题目我浏览了大量的道友的文章发现十分麻烦,但仍然从其中收益菲薄,所以在这里分享一下我认为最好的代码 impor ...

  7. m进制转换为n进制-任意进制转换算法

    这种题也是一道经典的面试题,主要考察进制转换细想,Coding质量等. 当我们把十进制转成二进制的时候,我们通过辗转相除,取余,逆置余数序列的过程得到新的进制的数.因此我们可以借助这种思想把M进制转成 ...

  8. javascript进制转换_《算法笔记》3.5小节——入门模拟-gt;进制转换

    @[TOC] # Contest100000579 - <算法笔记>3.5小节--入门模拟->进制转换 ## 例题 ### PATB1022 PTA | 程序设计类实验辅助教学平台 ...

  9. 【教女朋友学网络系列2】之进制转换及IP地址类

    关于数制转换及IP地址 序言 一.计算机的数制 1.数制: 2.数位: 3.基数: 4.位权: 二. 数制系统 1.二进制 2.十进制 3.十六进制 三.IP 1.什么是IP 2.分类 四.子网掩码 ...

最新文章

  1. 收获单季最大营收,“半死不活”特斯拉再续命一秒?
  2. 漫谈MySQL索引与字段儿长度的关系
  3. SPI接口比IIC速度快的理解
  4. FreeSql (二)自动迁移实体
  5. 高性能MySQL(4)——查询性能优化
  6. c++11新特性_【C++11新特性】 C++11智能指针之weak_ptr
  7. c语言 bcd码 16进制字符串 原理,ASCII码、HEX、字符、BCD 等等 基础知识思考
  8. 【报告分享】2021年度中国虚拟数字人影响力指数报告.pdf(附下载链接)
  9. CVE-2021-20226:详解 Linux 内核 IO_URING 子系统中的引用计数漏洞
  10. C语言中的指针型函数值
  11. viewstate和session(转自博客园)
  12. Python3使用PIL
  13. 【手写数字识别】基于matlab CNN网络手写数字识别分类【含Matlab源码 1286期】
  14. 2017-2018-2 20179302 《网络攻防》第三周作业
  15. 面空间数据中网格索引和四叉树索引的结合及优化的一种方案
  16. Timus 1005. Stone pile
  17. 自动计数报警器c语言,计数报警器设计
  18. JAVA基础,输入/输出(I/O)流
  19. 微信小程序的基本结构
  20. 哪个平台的身份证实名认证接口服务比较靠谱?

热门文章

  1. python没有pygame_Python制作十款经典的童年游戏(附源码)
  2. JBoss 反序列化漏洞复现
  3. 52单片机 与 STM32 与 MSP430 与 流行单片机
  4. Render函数的参数
  5. 卫健委中高风险地区查询
  6. asp微信点餐系统下载,asp微信扫码点餐支付,asp源码开发的mdb数据库
  7. Python结合冰点下载工具批量下载文档
  8. 同事电脑刚进入桌面几秒,就自动重启
  9. 圆度坐标法MATLAB,基于坐标法测量圆度误差数据处理的MATLAB实现
  10. mac最高权限删文件