using System; using System.Collections.Generic; using System.Linq; using System.Text;

namespace AnyConvertx2x { /// <summary> /// 数字进制转换类 /// </summary> public class AnyConvert { private static char[] rDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U','V', 'W', 'X', 'Y', 'Z' }; /// <summary> /// 将指定基数的数字的 System.String 表示形式转换为等效的 64 位有符号整数。 /// </summary> /// <param name="value">包含数字的 System.String。</param> /// <param name="fromBase">value 中数字的基数,它必须是[2,36]</param> /// <returns>等效于 value 中的数字的 64 位有符号整数。- 或 - 如果 value 为 null,则为零。</returns> private long x2h(string value, int fromBase) { value = value.Trim(); if (string.IsNullOrEmpty(value)) { return 0L; } string sDigits = new string(rDigits, 0, fromBase); long result = 0; //value = reverse(value).ToUpper(); 1 value = value.ToUpper();// 2 for (int i = 0; i < value.Length; i++) { if (!sDigits.Contains(value[i].ToString())) { throw new ArgumentException(string.Format("The argument \"{0}\" is not in {1} system.", value[i], fromBase)); } else { try { //result += (long)Math.Pow(fromBase, i) * getcharindex(rDigits, value[i]); 1 result += (long)Math.Pow(fromBase, i) * getcharindex(rDigits, value[value.Length - i - 1]);// 2 } catch { throw new OverflowException("运算溢出."); } } } return result; } private int getcharindex(char[] arr, char value) { for (int i = 0; i < arr.Length; i++) { if (arr[i] == value) { return i; } } return 0; } //long转化为toBase进制 private string h2x(long value, int toBase) { int digitIndex = 0; long longPositive = Math.Abs(value); int radix = toBase; char[] outDigits = new char[63]; for (digitIndex = 0; digitIndex <= 64; digitIndex++) { if (longPositive == 0) { break; } outDigits[outDigits.Length - digitIndex - 1] = rDigits[longPositive % radix]; longPositive /= radix; } return new string(outDigits, outDigits.Length - digitIndex, digitIndex); } /// <summary> /// 任意进制转换,将fromBase进制表示的value转换为toBase进制 /// </summary> /// <param name="value"></param> /// <param name="fromBase">原来进制(2-36进制)</param> /// <param name="toBase">转换后的进制(2-36进制)</param> /// <returns></returns> public string X2X(string value, int fromBase, int toBase) { if (string.IsNullOrEmpty(value.Trim())) { return string.Empty; } if (fromBase < 2 || fromBase > 36) { throw new ArgumentException(String.Format("The fromBase radix \"{0}\" is not in the range 2..36.", fromBase)); } if (toBase < 2 || toBase > 36) { throw new ArgumentException(String.Format("The toBase radix \"{0}\" is not in the range 2..36.", toBase)); } long m = x2h(value, fromBase); string r = h2x(m, toBase); return r; } } }

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using AnyConvertx2x; namespace AnyRadixConvert { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { AnyConvert convert = new AnyConvert(); textBox2 .Text = convert.X2X(textBox1 .Text , 36, 10);//36 To 10 } private void button2_Click(object sender, EventArgs e) { AnyConvert convert = new AnyConvert(); textBox2.Text = convert.X2X(textBox1.Text, 10, 36);//10 To 36 } } }

转载于:https://www.cnblogs.com/simpleBlue3/p/3911606.html

2-36进制,可以任意进制互转的类相关推荐

  1. [进制转换]用python实现10进制转任意进制的方法

    目录 问题引出: 原理:10进制数转任意进制数都是通过除以目标进制数取余得到的. 具体步骤: 结果展示: 代码实现: ①数值转换预处理 实现原理 ②得到目标进制数 创建字典的原理 问题引出: 各种算术 ...

  2. 任意进制转任意进制 C++

    任意进制转任意进制 C++ 代码如下(C++): #include <bits/stdc++.h> using namespace std;int main() {int D = 0; s ...

  3. 进制转换—任意进制之间的转换

    一.十进制转化为任意进制 1.十进制数num转为七进制:力扣504 class Solution {public String convertToBase7(int num) {if(num==0){ ...

  4. 进制转换:十进制转换为任意进制、任意进制转换为十进制

    目录 十进制转换为任意进制 任意进制转换为十进制 十进制转换为任意进制 //将10进制数num转换为d进制数 void convert_base(int num, int d) {int k;stac ...

  5. 考研机试刷题第二天:任意进制转任意进制【高进度短除法】

    理一下思路: 看了y总的视频之后我觉得这道题其实只需要对上次写的进制转换微微做一下调整即可. 于是我写出了下面的代码 #include <iostream> #include <ve ...

  6. 进制转换(任意进制)

    题目:输入两个数n,m,n为十进制的数,将n转换成m进制 题解:相信大家都知道怎么用数学方法算出十进制转换成其他进制,而对于怎么用代码把它敲出来,其实思路都是相同的,对于n,我们让它对m取余,将每次取 ...

  7. 代码题 10进制转任意进制

    #include<iostream> using namespace std; void convert(int n,int base,char a[]){int i=0;while(n& ...

  8. JS将十进制转换为二进制、十六进制、八进制,任意进制

    JS将十进制转换为2进制.16进制.8进制,任意进制 转换为二进制 let n = 1234; console.log(n.toString(2)); 转换为十六进制 let n = 1234; co ...

  9. 十进制与任意进制的转换

    进制转换 任意进制转为十进制 代码实现 十进制转为任意进制 代码实现 任意进制转为十进制 方法:∑i n 系数X基数权值(累加) 将二进制转成十进制 10110110 = 1×27+1×25+1×24 ...

  10. python编写程序转换进制_Python实现任意进制之间的转换

    在日常生活中我们频繁使用到数学的进制,如季度逢三进一,星期逢七进一:生肖.小时使用12进制,每天使用24进制,每月使用30进制,分秒使用60进制,一年使用360进制等等:在编程过程中我们经常需要转换进 ...

最新文章

  1. 声明对象_计算机各语言数据类型及对象声明之区别
  2. Skyscrapers (hard version) CodeForces - 1313C2(单调栈)
  3. 前端学习(2976):路由钩子函数
  4. microsoft query sql引用单元格_Microsoft.Office.Interop.Excel操作Excel拾遗
  5. java webinf lib jar_java web项目中classes文件夹下的class和WEB-INF/lib中jar里的class文件加载顺序...
  6. suse 10 下mysql安装
  7. 受 SQLite 多年青睐,C 语言到底好在哪儿? 1
  8. jQuery LigerUI 插件介绍及使用之ligerTree
  9. 汇编学习--7.12--总结
  10. 微软MVP总结的Windows XP优化大全
  11. 如何用c语言批量替换字符串,[C/C++]急速批量替换字符串
  12. 写个爬虫,爬图片,mzitu
  13. 【人工智能】推荐系统算法
  14. python画流程_使用Graphviz快速绘制流程图
  15. 【毕业设计-教程】红外控制原理详解 - 单片机嵌入式 物联网 stm32 c51
  16. 微型计算机系统核心hhg,计算机应用基础测试题1
  17. 玩转Jetson AGX Orin—— Quick Start
  18. python十进制转八进制_Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)...
  19. 傅里叶变换的解释与推导
  20. java界面——可视化窗口入门级

热门文章

  1. 自定义验证之整数(包括0和负数)
  2. 跨境移动互联网的魅力演绎,hao123无论成就下一个条目?
  3. 一种基于Spring的java程序常量管理思路
  4. [做一个幸福的记号 忘了琐碎的烦恼]西兰花猪柳
  5. Day04:继承的意义(下) / 访问控制 / static和final
  6. pre-commit钩子,代码质量检查
  7. [POJ1035]Spell checker
  8. App开发流程之图像处理工具类
  9. 某班的成绩出来了,现在老师要把班级的成绩打印出来,和 显示当前时间
  10. C/C++ 笔试、面试题目大汇总收藏(上)