搞懂一直模糊不清的进制转换 & C#代码实现转换
【摘要】 什么是进制转换?
进制转换:
进制转换是人们利用符号来计数的方法。进制转换由一组数码符号和两个基本因素“基数”与“位权”构成。
基数是指,进位计数制中所采用的数码(数制中用来表示“量”的符号)的个数。
位权是指,进位制中每一固定位置对应的单位值。
二进制,八进制,十六进制与十进制数之间的关系
二进制 (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进制数对应的十进制数。
例子如下图:
二、八、十六进制数相互转换
二进制、八进制、十六进制之间存在特殊关系: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)