はじめに
今回は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)