搞懂一直模糊不清的进制转换 & C#代码实现转换

举报
陈言必行 发表于 2021/08/13 22:36:33 2021/08/13
【摘要】 什么是进制转换? 进制转换: 进制转换是人们利用符号来计数的方法。进制转换由一组数码符号和两个基本因素“基数”与“位权”构成。 基数是指,进位计数制中所采用的数码(数制中用来表示“量”的符号)的个数。 位权是指,进位制中每一固定位置对应的单位值。 二进制,八进制,十六进制与十进制数之间的关系 二进制 (B:binary)八进制 (O:octal)十进制(...

什么是进制转换?

进制转换:

进制转换是人们利用符号来计数的方法。进制转换由一组数码符号和两个基本因素“基数”与“位权”构成。
基数是指,进位计数制中所采用的数码(数制中用来表示“量”的符号)的个数。
位权是指,进位制中每一固定位置对应的单位值。

二进制,八进制,十六进制与十进制数之间的关系

二进制 (B:binary) 八进制 (O:octal) 十进制(D:decimal) 十六进制(H:hexadeclmal)
0 0 0 0
1 1 1 1
10 2 2 2
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 8 10 8
1001 9 11 9
1010 10 12 A
1011 11 13 B
1100 12 14 C
1101 13 15 D
1110 14 16 E
1111 15 17 F

任何进制转换为10进制:
将任意进制数 - 按位权展开的多项式,各位数码乘以各自的权值且累加起来,就得到该r进制数对应的十进制数。
例子如下图:

111


二、八、十六进制数相互转换
二进制、八进制、十六进制之间存在特殊关系:81=23、161=24,即1位八进制数相当于3位二进制数,1位十六进制数相当于4位二进制数。
根据上述关系,可以得到它们之间的转换方法:
1.二进制数转换成八进制数时,以小数点为中心向左右两边分组,每3位为一组转换成相应的八进制数,两头不足3位用0补;
2.二进制数转换成十六进制数时,以小数点为中心向左右两边分组,每4位为一组转换成相应的十六进制数,两头不足4位用0补;
3.八进制数转换成十六进制数或十六进制数转换成八进制数时,可以借助二进制。

例子:

在这里插入图片描述


C#代码进行各进制的转换
 public static void JinZhiZhuangHuan() { #region 十进制 Console.WriteLine("十进制 10 转换为其他进制:"); int number = 10; //十进制转二进制字符串 Console.WriteLine(Convert.ToString(number, 2)); //十进制转八进制字符串 Console.WriteLine(Convert.ToString(number, 8)); //十进制转十六进制字符串 Console.WriteLine(Convert.ToString(number, 16)); #endregion Console.WriteLine(); #region 二进制 Console.WriteLine("二进制 1010 转换为其他进制:"); string binary = "1010"; //转八进制数 Console.WriteLine(Convert.ToString(Convert.ToInt32(binary, 2), 8)); //转十进制数 Console.WriteLine(Convert.ToInt32(binary, 2)); //转十六进制数 Console.WriteLine(string.Format("{0:x}", Convert.ToInt32(binary, 2))); #endregion Console.WriteLine(); #region 八进制 Console.WriteLine("八进制 12 转换为其他进制:"); string octal = "12"; //转二进制数 Console.WriteLine(Convert.ToString(Convert.ToInt32(octal, 8), 2)); //转十进制数 Console.WriteLine(Convert.ToInt32(octal, 8).ToString()); //转十六进制数 Console.WriteLine(Convert.ToString(Convert.ToInt32(octal, 8), 16)); #endregion Console.WriteLine(); #region 十六进制 Console.WriteLine("十六进制 0xA 转换为其他进制:"); //十六进制转二进制字符串 Console.WriteLine(Convert.ToString(0xA, 2)); //十六进制转十进制数 Console.WriteLine(Convert.ToString(0xA, 8)); //十六进制转十进制数 Console.WriteLine(Convert.ToString(0xA, 10)); #endregion }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61

结果


进制转换在线工具:
https://tool.oschina.net/hexconvert
https://www.sojson.com/hexconvert.html

文章来源: czhenya.blog.csdn.net,作者:陈言必行,版权归原作者所有,如需转载,请联系作者。

原文链接:czhenya.blog.csdn.net/article/details/104452081

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。