【C#】2,8,10,16進数文字列と数値の相互変換方法まとめ

数字と文字列にはいろいろ変換方法があるのですが、一覧的に確認できると便利かと思いまとめてみました。

他にもいろいろやり方はありますがこれさえ覚えておけば問題ないと思います。

数値 → 2,8,10,16進数文字列 に変換

数値からN進数の文字列に変換したい場合、各基本型についている ToString() メソッドか Convert.ToString() メソッドを使用します。

元の型 変換先 やり方(1) やり方(2)
数値 2進数の文字列 Convert.ToString ( num , 2 );
数値 8進数の文字列 Convert.ToString ( val , 8 );
数値 10進数の文字列 num.ToString ( num ); Convert.ToString ( num );
数値 16進数の文字列 num.ToString ( "x" ); Convert.ToString ( num , 16 );

使用例は以下の通りです。

public static void Foo()
{
    int inum = 3130;

    // 整数値 → 2進数の文字列に変換
    string str2 = Convert.ToString(inum, 2);
    // > str2 = 110000111010

    // 整数値 → 8進数の文字列に変換
    string str8 = Convert.ToString(inum, 8);
    // > str8 = 6072

    // 整数値 → 10進数の文字列に変換
    string str101 = inum.ToString();
    string str102 = Convert.ToString(inum);
    // > str101 = 3130, str102 = 3130

    // 整数値 → 16進数の文字列に変換
    string str161 = inum.ToString("X"); // "x"はアルファベット部分が小文字, "X"は大文字となる
    string str162 = Convert.ToString(inum, 16);
    // > str161 = C3A, str162 = c3a
}

2,8,10,16進数文字列 → 数値 に変換

Convert クラスにある ToXxxx() メソッドで変換できます。例えば int 型に変換したいときは Convert.ToInt32() メソッドを使用します。

元の型 変換先 やり方
2進数の文字列 int Convert.ToInt32 ( "110000111010" , 2 );
8進数の文字列 int Convert.ToInt32 ( "6072" , 8 );
10進数の文字列 int Convert.ToInt32 ( "3130" );
16進数の文字列 int Convert.ToInt32 ( "0xFFFF" , 16 );

「Convert.ToInt32("0xFFFF", 16);」は文字列の先頭に「0x」が付いていても変換できます。

使用例は以下の通りです。

public static void Foo()
{
    // 文字列を2進数として intに変換
    int inum1 = Convert.ToInt32("110000111010", 2);
    // > inum1 = 3130

    // 文字列を8進数として intに変換
    int inum2 = Convert.ToInt32("6072", 8);
    // > inum2 = 3130

    // 文字列を10進数として intに変換
    int inum3 = Convert.ToInt32("3130");
    // > inum3 = 3130

    // 先頭に0xが付いた16進数文字列を intに変換
    int inum4 = Convert.ToInt32("0xC3A", 16);
    // > inum4 = 3130

    // int 以外にもほぼすべての基本型に変換できる。
    // ただし 16 が指定できるオーバーロードが無いものもある
    byte _b = Convert.ToByte(str, 16);
}

短いですが以上です。