进制之间的转换

主要用到连个函数:

Convert.ToInt32(str,numbased):将字符串转成str,按照numbeased指定的进制转成10进制数;
Convert.ToString(decimalNum,numbased):将十进制数decimalNum转成numberbased指定的进制字符串

十进制转 二进制,八进制,16进制

//10进制转成二进制
Convert.ToString(999,2);//10进制转成8进制
Convert.ToString(999,8);//10进制转16进制
Convert.ToString(999,16);//或者
string.Format("{0:X}", 999);

二进制 转 8进制 ,10进制,16进制

// 2 进制转 8进制//假如二进制是字符串 strb
string strb="0101111";
int tmp =Convert.ToInt32(strb,2);//按照2进制解析成10进制数
//使用10进制转成其他进制来进行转换
Convert.ToString(tmp,8);//2 进制转10,16进制都是这样推导的

8进制转 2进制 10进制 ,16进制的方法同上

16进制 转 2进制 8进制10进制  同上


当对字符串转成其他进制的过程中,需要对对应进制判断是否符合进制数的要求:

使用正则来校验 进制数字符串

//判断是否是二进制
public static bool IsBinary(string str)
{return Regex.IsMatch(str, "^[0-1]+$");
}
//判断是否是八进制数
public static bool IsOctal(string str)
{return Regex.IsMatch(str, "^[0-7]+$");
}
//判断是否十进制数
public static bool IsDecimal(string str)
{return Regex.IsMatch(str, "^[0-9]+$");
}
//判断是否十六进制数
public static bool IsHexDecimal(string str)
{return Regex.IsMatch(str, "^[0-9A-Fa-f]+$");
}


下面进入正题:效果图

窗体代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
//正则校验
using System.Text.RegularExpressions;namespace Conversion
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void btnConvert_Click(object sender, EventArgs e){Action();}//进制转换实现方法private void Action(){//获取输入string input_str = textBoxInput.Text;switch(comboBoxBerforBase.SelectedIndex){case 0://二进制转其他进制//根据选择自动的进行转换if(Transform.IsBinary(input_str)){textBoxResult.Text = new Transform().BinaryTo(input_str, comboBoxTargetBase.SelectedIndex);}else{MessageBox.Show("输入的数字不是有效的二进制数", "提示");return;}break;case 1:if (Transform.IsOctal(input_str)){textBoxResult.Text = new Transform().OctalTo(input_str, comboBoxTargetBase.SelectedIndex);}else{MessageBox.Show("输入的数字不是有效的八进制数", "提示");return;}break;case 2:if (Transform.IsDecimal(input_str)){textBoxResult.Text = new Transform().DecimalTo(input_str, comboBoxTargetBase.SelectedIndex);}else{MessageBox.Show("输入的数字不是有效10进制数", "提示");return;}break;case 3:if (Transform.IsHexDecimal(input_str)){textBoxResult.Text = new Transform().HexDecimallTo(input_str, comboBoxTargetBase.SelectedIndex);}else{MessageBox.Show("输入的数字不是有效16进制数", "提示");return;}break;    }}}
}

新建TransForm类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;//正则校验
using System.Text.RegularExpressions;
namespace Conversion
{//使用反射应该更好===后期学完其他知识后,更新一下优化的代码class Transform{//判断是否是二进制public static bool IsBinary(string str){return Regex.IsMatch(str, "^[0-1]+$");}//判断是否是八进制数public static bool IsOctal(string str){return Regex.IsMatch(str, "^[0-7]+$");}//判断是否十进制数public static bool IsDecimal(string str){return Regex.IsMatch(str, "^[0-9]+$");}//判断是否十六进制数public static bool IsHexDecimal(string str){return Regex.IsMatch(str, "^[0-9A-Fa-f]+$");}//二进制转其他进制 2 --》 2 8 10 16public string BinaryTo(string str,int NumBased){string result = "";if(IsBinary(str))//如果是二进制{switch(NumBased){case 0://转换成本身default://不在范围内就原先字符码显示result = str;break;case 1://转成8进制int tmp = Convert.ToInt32(str, 2);//十进制result = Convert.ToString(tmp,8);//十进制--》8进制break;case 2://转成10进制result = Convert.ToInt32(str,2).ToString();break;case 3://转成16进制result = string.Format("{0:X}", Convert.ToInt32(str, 2));break;}}return result;}//8进制转其他进制 8 --》 2 8 10 16public string OctalTo(string str, int NumBased){string result = "";if (IsOctal(str))//如果是8进制{switch (NumBased){case 1://转换成本身default://不在范围内就原先字符码显示result = str;break;case 0://转成2进制int tmp = Convert.ToInt32(str, 8);//十进制result = Convert.ToString(tmp, 2);//十进制--》2进制break;case 2://转成10进制result = Convert.ToInt32(str, 8).ToString();break;case 3://转成16进制result = string.Format("{0:X}", Convert.ToInt32(str, 8));break;}}return result;}//10进制转其他进制 10--》 2 8 10 16public string DecimalTo(string str, int NumBased){string result = "";if (IsDecimal(str))//如果是8进制{switch (NumBased){case 2://转换成本身default://不在范围内就原先字符码显示result = str;break;case 0://转成2进制int tmp_ = Convert.ToInt32(str, 10);//十进制result = Convert.ToString(tmp_, 2);//十进制--》2进制break;case 1://转成8进制int tmp_1 = Convert.ToInt32(str, 10);result = Convert.ToString(tmp_1, 8);break;case 3://转成16进制result = string.Format("{0:X}", Convert.ToInt32(str, 10));break;}}return result;}//16进制转其他进制 16--》 2 8 10 16public string HexDecimallTo(string str, int NumBased){string result = "";if (IsHexDecimal(str))//如果是16进制{switch (NumBased){case 3://转换成本身default://不在范围内就原先字符码显示result = str;break;case 0://转成2进制int tmp_ = Convert.ToInt32(str, 16);//十进制result = Convert.ToString(tmp_, 2);//十进制--》2进制break;case 1://转成8进制int tmp_1 = Convert.ToInt32(str, 16);result = Convert.ToString(tmp_1, 8);break;case 2://转成10进制result = Convert.ToInt32(str, 16).ToString();break;}}return result;}}
}

  

转载于:https://www.cnblogs.com/ssjt/articles/10119683.html

二进制-八进制-十进制-16进制之间的转换相关推荐

  1. Python 进制转换,十进制与2进制、8进制、16进制之间的转换

    1.十进制转二进制:bin(x).二进制带有前缀0b,bin(x)[2:]可以用来去掉前缀 x=int(input()) print(bin(x)) print(bin(x)[2:]) #去掉前缀#运 ...

  2. 十进制、二进制补码、16进制补码的转换

    十进制转二进制补码 首先要明确的是:十进制直接转成二进制是转化为二进制原码,正数的原码和补码相同,但负数的原码按位取反末位加一才是补码. 因此流程图大概如下: 整个代码我贴在最后 主要逻辑代码: pu ...

  3. python常用的十进制、16进制之间的转换

    一.整数之间的进制转换: hex(16) # 10进制转16进制 oct(8) # 10进制转8进制 bin(8) # 10进制转2进制 二.字符串转整数 ''' 学习中遇到问题没人解答?小编创建了一 ...

  4. 二进制的认识、进制之间的转换、计算机储存单位

    二进制: 计算机中的数据不同于人们生活中的数据,人们生活采用十进制数,而计算机中全部采用二进制数表示,它只包含0.1两个数,逢二进一,如:1+1=10.每一个0或者每一个1,叫做一个bit(比特). ...

  5. 10进制与16进制之间的转换 delphi

    delphi中有直接把10进制转换成16进制的函数: function   IntToHex(Value:   Integer;   Digits:   Integer):   string;   o ...

  6. 10进制与16进制之间的转换 delphi

    delphi中有直接把10进制转换成16进制的函数: function   IntToHex(Value:   Integer;   Digits:   Integer):   string;   o ...

  7. java实现颜色Color对象和16进制之间的转换

    package com.tsxs.test;import java.awt.Color;public class TestColor {public static void main(String[] ...

  8. 字符串与16进制之间的转换

    这个问题看是很简单,但是在不同语言中实现的方式却千差万别,如果不知道方法,还真是麻烦,我就是在 C# 中遇到该问题,让我费了很大的周折,才在 msdn 查到. 一. 16 进制字符串转数字      ...

  9. 字符串和16进制之间的转换

    在串口传递数据的时候数据格式是16进制的,但是存下来的数据为了方便查看,用字符串存储下来了.例如串口传递的数据是0xAA 0xBB 0xCC,存储下来的文件为AABBCC,这样存储带来的问题就是无法直 ...

最新文章

  1. Vcastr 2.2 flv 网络播放器 参数设置
  2. 漫谈视频目标跟踪与分割
  3. 提高SQLite每秒INSERT的性能?
  4. 使用文档自动保存功能
  5. 修改开发环境、工程、文件的字符集
  6. 【LeetCode】TreeNode类实现解析(java实现)
  7. Java并发(四)——synchronized、volatile
  8. Centos7.4 部署DHCP服务
  9. DEVC++中的 “万能头文件” <bits/stdc++.h>
  10. CodeForces-1040B Shashlik Cooking(贪心)
  11. Linux系统上安装python详细步骤
  12. 软考基础知识—操作系统
  13. BtTracker原理
  14. 辽宁省朝阳市高考成绩查询2021,2021年朝阳高考状元多少分是谁,朝阳高考状元名单资料...
  15. 关于赴日IT软件开发
  16. 使用Vitamio插件显示花屏
  17. Java 进程启停及诊断 Jarboot大改版、焕然一新
  18. 【融职培训】Web前端学习 第3章 JavaScript基础教程9 内置对象
  19. Spring Bean作用域与生命周期
  20. OpenGL中常用的 GLUT 函数

热门文章

  1. html事件机制,浅析JavaScript中的事件机制_基础知识
  2. html制作状态栏数字时钟,用HTML5制作数字时钟的教程_html5教程技巧
  3. python字典get计数_Python内部是如何存储GC引用变量的计数的?
  4. 计算机自动启动无法开机,为何插上电源 电脑会自动开机 但是又开不起来
  5. 推荐 | 有三AI生态新的资源干货集中营,好书好工具好内容等你来淘
  6. 【caffe解读】 caffe从数学公式到代码实现4-认识caffe自带的7大loss
  7. 全球及中国食品供应区块链行业运行形势及未来投资规模建议报告2021年版
  8. 全球及中国陶瓷承烧板行业发展态势及运营前景研究报告2021-2027年版
  9. 计算机无法搜索本地文件,电脑本地磁盘无法搜索文件。怎么处理?
  10. 联合国粮农组织总干事屈冬玉 对话国际农民丰收节贸易会