欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-05-25 15:43:31
常见的进制方式,主要有二进制,八进制,十进制和十六进制,通用的转换方式是把非十进制的数据类型转换成十进制的,然后再转换成其他类型。 在.NET Framework中,System.Convert 类中提供了较为全面的各种类型、数值之间的转换功能。其中的两个方法可以轻松的实现各种进制的数值间的转换 一 ......

 

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

   在.net framework中,system.convert 类中提供了较为全面的各种类型、数值之间的转换功能。其中的两个方法可以轻松的实现各种进制的数值间的转换

 

一 、convert 类中的转换方法

 


 

1、convert.toint32(string value, int frombase); 
  把不同进制数值的字符串转换为数字(十进制)

                       value 参数 要进行转换的数值字符串

                       frombase参数 要转换成的进制格式,只能是2、8、10及16。 

convert.toint32(”100111101″, 2); //二进制数 100111101 转成十进制

convert.toint32(”76″, 8);        //八进数 76 制转成十进制

convert.toint32(”ff”, 16);       // 16进数 ff 制转换成十进制

 


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

       value 参数 要进行转换的数字(十进制数)

                       tobase参数 要转换成的进制格式,只能是2、8、10及16。

 

convert.tostring(69, 2); //十进制数 69 转二进制

convert.tostring(69, 8); //十进制数 69 转八进制

convert.tostring(69, 16);//十进制数 69 转十六进制

 

 

 二 、一个各进制*转换的方法

 


 

进制转换的入口函数:

C# 2进制、8进制、10进制、16进制...各种进制间的转换(一) convert 类中的方法
       /// <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;
       }     
进制转换的入口函数

 

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

C# 2进制、8进制、10进制、16进制...各种进制间的转换(一) convert 类中的方法
       /// <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;
       }
从二进制转换到其他格式 

 

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

C# 2进制、8进制、10进制、16进制...各种进制间的转换(一) convert 类中的方法
       /// <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;
       }
从八进制转换成其他格式

 

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

C# 2进制、8进制、10进制、16进制...各种进制间的转换(一) convert 类中的方法
       /// <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;
       }
从十进制转换到其他格式

 

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

C# 2进制、8进制、10进制、16进制...各种进制间的转换(一) convert 类中的方法
       /// <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) ;
       }