C# 2進位、8進位、10進位、16進位...各種進位間的轉換(一) convert 類中的方法

来源:https://www.cnblogs.com/Tanghongchang/archive/2018/09/14/9647104.html
-Advertisement-
Play Games

常見的進位方式,主要有二進位,八進位,十進位和十六進位,通用的轉換方式是把非十進位的數據類型轉換成十進位的,然後再轉換成其他類型。 在.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 轉十六進位

 

 

 二 、一個各進位自由轉換的方法

 


 

進位轉換的入口函數:

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

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • GitHub代碼鏈接 1.項目相關要求 •基本功能列表: -c 統計文件中字元的個數 -w 統計文件中的詞數 -l 統計文件中的行數 •拓展功能: -a 統計文件中代碼行數、註釋行數、空行 2.PSP2.1 PSP2.1 Personal Software Process Stages 預估耗時(小 ...
  • 在一個二維數組中(每個一維數組的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函數,輸入這樣的一個二維數組和一個整數,判斷數組中是否含有該整數。 1.二維數組,行row從左到右遞增,列col從上到下遞增 2.定左下角為比較點,比它大的位於它右邊,因此c... ...
  • 簡單紹一下如何將ASP.NET Core 應用發佈到Linux (Ubuntu)伺服器上,都是文檔的東西。 伺服器結構 ASP.NET Core 2.x 有兩種server: HTTP.sys 只支持Windows,並支持一些Windows獨有的特性。 Kestrel,跨平臺的伺服器,高度優化,這個 ...
  • Github項目地址:https://github.com/3116005131/3116005131.git PSP2.1 Personal Software Process Stages 預估耗時(分鐘) 實際耗時(分鐘) Planning 計劃 · Estimate · 估計這個任務需要多少時 ...
  • 紙牌游戲有很多種玩法,C#代碼寫的紙牌游戲,網上也能找到不少,從中也能學習到不少知識,自己動手也寫一個,算是記錄下學習過程吧. 紙牌21點的玩法也比較簡單,就是看誰手中的所有牌相加是21點,或是離21點的數字最近,最大者贏.照著這樣思路開始編寫代碼. 牌面A到10按牌面數字算點數,J,Q,K,大小王 ...
  • 該文可參考我的另一篇關聯文章: https://www.cnblogs.com/lxhbky/p/6957825.html 配置如下: 轉換如下: //獲取外圍屬性的值: //獲取屬性對應的集合 ...
  • Cocos2d-x的控制項類型僅限於基礎的幾種,如label、button、listview等,做游戲開發時基本夠用了。但如果想用cocos2dx來做工具的話,那就有點困難了。 這裡介紹一個適合做工具的UI庫:ImGui, 地址:https://github.com/ocornut/imgui。核心文 ...
  • /// /// 十進位轉換為二進位 /// /// /// public static string DecToBin(string x) { string z = null; int X = Convert.ToInt32(x); ... ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...