C# 十进制与十六进制互转

简介: 1.从十六进制转换为十进制 /// /// 十六进制转换到十进制 /// /// /// public static string Hex2Ten(string hex) ...

1.从十六进制转换为十进制

    /// <summary>
        /// 十六进制转换到十进制
        /// </summary>
        /// <param name="hex"></param>
        /// <returns></returns>
        public static string Hex2Ten(string hex)
        {
            int ten = 0;
            for (int i = 0, j = hex.Length - 1; i < hex.Length; i++)
            {
                ten += HexChar2Value(hex.Substring(i, 1)) * ((int)Math.Pow(16, j));
                j--;
            }
            return ten.ToString();
        }

        public static int HexChar2Value(string hexChar)
        {
            switch (hexChar)
            {
                case "0":
                case "1":
                case "2":
                case "3":
                case "4":
                case "5":
                case "6":
                case "7":
                case "8":
                case "9":
                    return Convert.ToInt32(hexChar);
                case "a":
                case "A":
                    return 10;
                case "b":
                case "B":
                    return 11;
                case "c":
                case "C":
                    return 12;
                case "d":
                case "D":
                    return 13;
                case "e":
                case "E":
                    return 14;
                case "f":
                case "F":
                    return 15;
                default:
                    return 0;
            }
        }
this.txtStartShi.Text = Hex2Ten(this.txtStartSN.Text.Trim().Substring(4, 8));
this.txtEndShi.Text = Hex2Ten(this.txtEndSN.Text.Trim().Substring(4, 8));

 

 

2.从十进制转换为十六进制

        /// <summary>
        /// 从十进制转换到十六进制
        /// </summary>
        /// <param name="ten"></param>
        /// <returns></returns>
        public static string Ten2Hex(string ten)
        {
            ulong tenValue = Convert.ToUInt64(ten);
            ulong divValue, resValue;
            string hex = "";
            do
            {
                //divValue = (ulong)Math.Floor(tenValue / 16);

                divValue = (ulong)Math.Floor((decimal)(tenValue / 16));

                resValue = tenValue % 16;
                hex = tenValue2Char(resValue) + hex;
                tenValue = divValue;
            }
            while (tenValue >= 16);
            if (tenValue != 0)
                hex = tenValue2Char(tenValue) + hex;
            return hex;
        }

        public static string tenValue2Char(ulong ten)
        {
            switch (ten)
            {
                case 0:
                case 1:
                case 2:
                case 3:
                case 4:
                case 5:
                case 6:
                case 7:
                case 8:
                case 9:
                    return ten.ToString();
                case 10:
                    return "A";
                case 11:
                    return "B";
                case 12:
                    return "C";
                case 13:
                    return "D";
                case 14:
                    return "E";
                case 15:
                    return "F";
                default:
                    return "";
            }
        }
 int StartSN = Convert.ToInt32(this.txtStartShi.Text.Trim());
int EndSN = Convert.ToInt32(this.txtEndShi.Text.Trim());

  for (int i = 0; i < EndSN - StartSN + 1; i++)
  {
    listBox1.Items.Add("0014" + Ten2Hex((Convert.ToDouble(this.txtStartShi.Text) + i).ToString()));
  }

 

 

    /// <summary>
        /// 10进制转34进制
        /// </summary>
        /// <param name="parameter"></param>
        /// <returns></returns>
        public static string Ten2ThirtyFour(int parameter)
        {
            string[] radix = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", 
                                 "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", 
                                 "U", "V", "W", "X", "Y", "Z" };
            string result = "";
            int len = 0;
            int remainder = 0;
            len = parameter / 34;
            remainder = parameter % 34;
            result = radix[remainder];
            while (len > 0)
            {
                remainder = len % 34;
                len = len / 34;                
                result = radix[remainder] + result;
            }                        
            return result;
        }

 

相关文章
【进制转换】— 包含整数和小数部分转换(二进制、八进制、十进制、十六进制)手写版,超详细
【进制转换】— 包含整数和小数部分转换(二进制、八进制、十进制、十六进制)手写版,超详细
|
存储 机器学习/深度学习 算法
C#实现十六进制和十进制相互转换【及不同进制表示】
在程序中,十六进制的表示形式通常为字符串;而十进制则为数字整型(本质的内存存储都是01二进制)。数字的进制表示一般使用的不多,通常最大的需求是进制之间的相互转换。C#中提供了内置的转换方法...
631 0
C#实现十六进制和十进制相互转换【及不同进制表示】
|
机器学习/深度学习 程序员 C++
4、进制(二进制、八进制、十进制、十六进制)
4、进制(二进制、八进制、十进制、十六进制)
486 0
4、进制(二进制、八进制、十进制、十六进制)
二、八、十、十六进制互相转换大全
二进制(0~1)、八进制(0~7)、十进制(0~9)、十六进制(0~9、10即A、11即B、12即C、13即D、14即E、15即F)
559 0
|
程序员
笔记:二进制、八进制、十进制、十六进制的互相转换
二进制、八进制、十进制、十六进制的互相转换
笔记:二进制、八进制、十进制、十六进制的互相转换
二进制、八进制、十进制、十六进制前缀
二进制、八进制、十进制、十六进制前缀
299 0
C#(二)之十进制与二进制、八进制、十六进制之间的转换
所谓的进制,就是逢几进一的问题,生活中我们使用的是十进制,就是逢十进一。剩下的就不用多说了,下面开始一个一个来。
349 0
C#(二)之十进制与二进制、八进制、十六进制之间的转换
|
Java 开发者 索引
进制转换: 十进制转换成其他进制(一)
进制转换: 十进制转换成其他进制(一)
251 0
进制转换: 十进制转换成其他进制(一)
二进制、八进制、十进制、十六进制之间的转换
  最近复习软考各种进制之间的转换着实让人头疼,今天把常用的几种进制之间的转换问题简单做个总结,希望能够对大家有所帮助。   二进制八进制之间的转换   二进制与八进制之间的关系式每个八进制位对应三个二进制位,详情如下:   八进制:  0   ...
1439 0