C# 2进制、8进制、10进制、16进制...各种进制间的转换(一) convert 类中的方法

匿名 (未验证) 提交于 2019-12-02 22:06:11

 

  常见的进制方式,主要有二进制,八进制,十进制和十六进制,通用的转换方式是把非十进制的数据类型转换成十进制的,然后再转换成其他类型。

一 、Convert 类中的转换方法



  把不同进制数值的字符串转换为数字(十进制)



Convert.ToInt32(”100111101〃, 2); //二进制数 100111101 转成十进制  Convert.ToInt32(”76〃, 8);        //八进数 76 制转成十进制  Convert.ToInt32(”FF”, 16);       // 16进数 FF 制转换成十进制


2、Convert.ToString(int value, int toBase);
  可以把一个数字(十进制)转换为不同进制数值的字符串格式,

Convert.ToString(69, 2); //十进制数 69 转二进制  Convert.ToString(69, 8); //十进制数 69 转八进制  Convert.ToString(69, 16);//十进制数 69 转十六进制


进制转换的入口函数:

       /// <summary>        /// 进制转换        /// </summary>        /// <param name="input"></param>        /// <param name="fromType">原来的进制格式</param>        /// <param name="toType">要转换成的进制格式</param>        /// <returns></returns>        public string ConvertGenericBinary(string input, byte fromType, byte toType)        {            string output = input;            switch (fromType)            {                 case 2:                    output = ConvertGenericBinaryFromBinary(input,toType);                    break;                case 8:                    output = ConvertGenericBinaryFromOctal(input,toType);                    break;                case 10:                    output = ConvertGenericBinaryFromDecimal(input,toType);                    break ;                case 16:                    output = ConvertGenericBinaryFromHexadecimal(input,toType);                    break;                default:                    break;            }            return output;        }     
进制转换的入口函数

从二进制转换到其他格式:

       /// <summary>        /// 从二进制转换成其他进制        /// </summary>        /// <param name="input"></param>        /// <param name="toType"></param>        /// <returns></returns>        private string ConvertGenericBinaryFromBinary(string input,  byte toType)        {                       switch (toType)            {                 case 8:                    //先转换成十进制然后转八进制                    input = Convert.ToString(Convert.ToInt32(input, 2), 8);                    break;                case 10:                    input =  Convert.ToInt32(input, 2).ToString();                    break;                case 16:                    input = Convert.ToString(Convert.ToInt32(input, 2), 16);                    break;                default:                    break;             }            return input;        }

从八进制转换成其他格式:

       /// <summary>        /// 从八进制转换成其他进制        /// </summary>        /// <param name="input"></param>        /// <param name="toType"></param>        /// <returns></returns>        private string ConvertGenericBinaryFromOctal(string input, byte toType)        {            switch (toType)            {                case 2:                    input =  Convert.ToString(Convert.ToInt32(input, 8), 2);                    break;                case 10:                    input = Convert.ToInt32(input, 8).ToString();                    break;                case 16:                    input = Convert.ToString(Convert.ToInt32(input, 8), 16);                    break;                default:                    break;            }            return input;        }
从八进制转换成其他格式

从十进制转换到其他格式:

       /// <summary>        /// 从十进制转换成其他进制        /// </summary>        /// <param name="input"></param>        /// <param name="toType"></param>        /// <returns></returns>        private string ConvertGenericBinaryFromDecimal(string input, int toType)        {            string output = "";            int intInput = Convert.ToInt32(input);            switch (toType)            {                case 2:                    output = Convert.ToString(intInput, 2);                    break;                case 8:                    output = Convert.ToString(intInput, 8);                    break;                case 16:                    output = Convert.ToString(intInput, 16);                    break;                default:                    output = input;                    break;            }            return output;        }
从十进制转换到其他格式

从十六进制转换到其他格式:

       /// <summary>        /// 从十六进制转换成其他进制        /// </summary>        /// <param name="input"></param>        /// <param name="toType"></param>        /// <returns></returns>        private string ConvertGenericBinaryFromHexadecimal(string input, int toType)        {            switch (toType)            {                case 2:                    input = Convert.ToString(Convert.ToInt32(input, 16), 2);                    break;                case 8:                    input = Convert.ToString(Convert.ToInt32(input, 16), 8);                    break;                case 10:                    input = Convert.ToInt32(input, 16).ToString();                    break;                default:                    break;            }            return input;        }


  把各进制数转换成 十进制数进行计算,然后再转换成原类型。

举例一个二进制之间的加法:

       /// <summary>        /// 二进制之间的加法        /// </summary>        /// <param name="x"></param>        /// <param name="y"></param>        /// <returns></returns>        public string AddBetweenBinary(string x, string y)        {            int intSum = Convert.ToInt32(x, 2) + Convert.ToInt32(y, 2);            return Convert.ToString(intSum,2) ;        }

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!