二进制-八进制-十进制-16进制之间的转换
进制之间的转换
主要用到连个函数:
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进制之间的转换相关推荐
- Python 进制转换,十进制与2进制、8进制、16进制之间的转换
1.十进制转二进制:bin(x).二进制带有前缀0b,bin(x)[2:]可以用来去掉前缀 x=int(input()) print(bin(x)) print(bin(x)[2:]) #去掉前缀#运 ...
- 十进制、二进制补码、16进制补码的转换
十进制转二进制补码 首先要明确的是:十进制直接转成二进制是转化为二进制原码,正数的原码和补码相同,但负数的原码按位取反末位加一才是补码. 因此流程图大概如下: 整个代码我贴在最后 主要逻辑代码: pu ...
- python常用的十进制、16进制之间的转换
一.整数之间的进制转换: hex(16) # 10进制转16进制 oct(8) # 10进制转8进制 bin(8) # 10进制转2进制 二.字符串转整数 ''' 学习中遇到问题没人解答?小编创建了一 ...
- 二进制的认识、进制之间的转换、计算机储存单位
二进制: 计算机中的数据不同于人们生活中的数据,人们生活采用十进制数,而计算机中全部采用二进制数表示,它只包含0.1两个数,逢二进一,如:1+1=10.每一个0或者每一个1,叫做一个bit(比特). ...
- 10进制与16进制之间的转换 delphi
delphi中有直接把10进制转换成16进制的函数: function IntToHex(Value: Integer; Digits: Integer): string; o ...
- 10进制与16进制之间的转换 delphi
delphi中有直接把10进制转换成16进制的函数: function IntToHex(Value: Integer; Digits: Integer): string; o ...
- java实现颜色Color对象和16进制之间的转换
package com.tsxs.test;import java.awt.Color;public class TestColor {public static void main(String[] ...
- 字符串与16进制之间的转换
这个问题看是很简单,但是在不同语言中实现的方式却千差万别,如果不知道方法,还真是麻烦,我就是在 C# 中遇到该问题,让我费了很大的周折,才在 msdn 查到. 一. 16 进制字符串转数字 ...
- 字符串和16进制之间的转换
在串口传递数据的时候数据格式是16进制的,但是存下来的数据为了方便查看,用字符串存储下来了.例如串口传递的数据是0xAA 0xBB 0xCC,存储下来的文件为AABBCC,这样存储带来的问题就是无法直 ...
最新文章
- Vcastr 2.2 flv 网络播放器 参数设置
- 漫谈视频目标跟踪与分割
- 提高SQLite每秒INSERT的性能?
- 使用文档自动保存功能
- 修改开发环境、工程、文件的字符集
- 【LeetCode】TreeNode类实现解析(java实现)
- Java并发(四)——synchronized、volatile
- Centos7.4 部署DHCP服务
- DEVC++中的 “万能头文件” <bits/stdc++.h>
- CodeForces-1040B Shashlik Cooking(贪心)
- Linux系统上安装python详细步骤
- 软考基础知识—操作系统
- BtTracker原理
- 辽宁省朝阳市高考成绩查询2021,2021年朝阳高考状元多少分是谁,朝阳高考状元名单资料...
- 关于赴日IT软件开发
- 使用Vitamio插件显示花屏
- Java 进程启停及诊断 Jarboot大改版、焕然一新
- 【融职培训】Web前端学习 第3章 JavaScript基础教程9 内置对象
- Spring Bean作用域与生命周期
- OpenGL中常用的 GLUT 函数
热门文章
- html事件机制,浅析JavaScript中的事件机制_基础知识
- html制作状态栏数字时钟,用HTML5制作数字时钟的教程_html5教程技巧
- python字典get计数_Python内部是如何存储GC引用变量的计数的?
- 计算机自动启动无法开机,为何插上电源 电脑会自动开机 但是又开不起来
- 推荐 | 有三AI生态新的资源干货集中营,好书好工具好内容等你来淘
- 【caffe解读】 caffe从数学公式到代码实现4-认识caffe自带的7大loss
- 全球及中国食品供应区块链行业运行形势及未来投资规模建议报告2021年版
- 全球及中国陶瓷承烧板行业发展态势及运营前景研究报告2021-2027年版
- 计算机无法搜索本地文件,电脑本地磁盘无法搜索文件。怎么处理?
- 联合国粮农组织总干事屈冬玉 对话国际农民丰收节贸易会