(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!


進数の変換と64進数【C#】


このエントリーをはてなブックマークに追加


はじめに

今回はC#で進数を変換する方法のご紹介!

ついでに64進数の相互変換を行うクラスも作ってみたりしました。


System.Convert

C#で進数を変換したい場合はConvertを使うと簡単です。


16進数、8進数、2進数の文字列を整数に変換する: .NET Tips: C#, VB.NET


例えば、10進数から他の進数に変換したい場合はToStringを使います。

int decimalNum = 156;//10進数での値

string binary     = System.Convert.ToString(decimalNum, 2);  // 2進数に変換(10011100)
string octal      = System.Convert.ToString(decimalNum, 8);  // 8進数に変換(234)
string hexdecimal = System.Convert.ToString(decimalNum, 16); //16進数に変換(9c) 


また、他の進数から10進数に変換したい場合はToInt32を使います

int num2  = System.Convert.ToInt32("0101",  2); // 2進数から10進数に変換(5)
int num8  = System.Convert.ToInt32("222" ,  8); // 8進数から10進数に変換(146)
int num16 = System.Convert.ToInt32("FF33"16); //16進数から10進数に変換(65331) 



64進数

諸事情で64進数を使いたいという機会があり、

その時に作った64進数の相互変換を行うクラス、Base64Utilityもついでにご紹介!

なお、名前が紛らわしいですがエンコード方式のBase64とは違いますので、あしからず。



上記の通り、使用している文字は数字+アルファベットの大文字小文字+記号2文字(+と/)です。

また、使用方法は以下のような感じで、他の進数から64進数に変換したい場合は○○ToBase64

64進数を他の進数に変換したい場合はBase64To○○となります。

string num2  = Base64Utility.BinaryToBase64     ("0101"); // 2進数から64進数に変換(5)
string num8  = Base64Utility.OctalToBase64      ("2341"); // 8進数から64進数に変換(jx)
string num10 = Base64Utility.DecimalToBase64    ( 1234 ); //10進数から64進数に変換(ji) 
string num16 = Base64Utility.HexadecimalToBase64("f164"); //16進数から64進数に変換(f5A)  
string binary      = Base64Utility.Base64ToBinary     ( "5");  //64進数から2進数に変換(000101)
string octal       = Base64Utility.Base64ToOctal      ( "jx"); //64進数から8進数に変換(2341)
int    decimalNum  = Base64Utility.Base64ToDecimal    ( "ji"); //64進数から10進数に変換(1234) 
string hexadecimal = Base64Utility.Base64ToHexadecimal("f5A"); //64進数から64進数に変換(f164)