zoukankan      html  css  js  c++  java
  • C# 2进制、8进制、10进制、16进制...各种进制间的转换(一) 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 转十六进制

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


    进制转换的入口函数:

           /// <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) ;
           }
  • 相关阅读:
    POJ 3616 Milking Time(简单DP)
    POJ 2954 Triangle(计算几何Pick定理)
    POJ 3664 Election Time(简单的快速排序)
    POJ 2007 Scrambled Polygon(计算几何凸包)
    POJ 3673 Cow Multiplication(简单数学)
    POJ 3663 Costume Party (快速排序)
    计算几何模板(一)
    [转]Silverlight中使用MVVM(3)
    Silverlight中使用MVVM(2)
    Silverlight使用Binding动态绑定数据
  • 原文地址:https://www.cnblogs.com/Tanghongchang/p/9647104.html
Copyright © 2011-2022 走看看