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

什么是进制转换?

进制转换:

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

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

二进制 (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进制数对应的十进制数。
例子如下图:

搞懂一直模糊不清的进制转换 & C#代码实现转换_第1张图片


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

例子:

搞懂一直模糊不清的进制转换 & C#代码实现转换_第2张图片


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
        }

搞懂一直模糊不清的进制转换 & C#代码实现转换_第3张图片


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

你可能感兴趣的:(ジ﹋★☆『,烂,柯,人,』)