c#中的進位轉換

來源:互聯網
上載者:User

標籤:style   blog   ar   color   os   sp   on   資料   div   

今天偶然接觸到了一個位或的運算式,就像著自己做一個進位之間的轉換器,基本功不紮實,二進位之間的運算稀裡糊塗的。

常見的進位方式,主要有二進位,八進位,十進位和十六進位,通用的轉換方式是把非十進位的資料類型轉換成十進位的,然後再轉換成其他類型。

 

 進位轉換的入口函數:

       /// <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) ;       }

 

c#中的進位轉換

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.