2進数と10進数と16進数の相互変換

ここでは2進数、10進数、16進数を相互変換する方法を紹介しようと思います。

2進数を10進数に変換

2進数の文字列を10進数の数値に変換します。
引数が文字列なので、2進数以外の値が来る可能性を考慮してください。

string bit = "0101"; 

int dec = Convert.ToInt32(bit, 2);

Console.WriteLine(dec);

10進数を2進数に変換

10進数の数値を2進数の文字列に変換します。

int dec = 10;

string bit = Convert.ToString(dec, 2);

Console.WriteLine(bit);

16進数を10進数に変換

16進数の文字列を10進数の数値に変換します。
引数が文字列なので、16進数以外の値が来る可能性を考慮してください。

string bit = "F";

int dec = Convert.ToInt32(bit, 16);

Console.WriteLine(dec);

10進数を16進数に変換

10進数の数値を16進数の文字列に変換します。

int dec = 10;

string hex = Convert.ToString(dec, 16);

Console.WriteLine(hex);

2進数を16進数に変換

2進数の文字列を16進数の文字列に変換します。
Convert.ToStringでは文字列を使っての変換はできません。一度10進数にしてから変換します。
引数が文字列なので、2進数以外の値が来る可能性を考慮してください。

string bit = "01011";

string hex = Convert.ToString(Convert.ToInt32(bit, 2), 16);

Console.WriteLine(hex);

16進数を2進数に変換

16進数の文字列を2進数の文字列に変換します。
Convert.ToStringでは文字列を使っての変換はできません。一度10進数にしてから変換します。
引数が文字列なので、16進数以外の値が来る可能性を考慮してください。

string hex = "b";

string bit = Convert.ToString(Convert.ToInt32(hex, 16), 2);

Console.WriteLine(bit);

2進数、16進数は文字列であることに注意してください。

引数に利用する2進数と16進数は文字列です。どんな文字列でも入れられるので変換に失敗するとExceptionが発生します。

なので以下のように関数化しておいてどんな文字列が来ても対応できるようにしておくのがよいと思います。

public bool TryBit2Dec(string bit, out int dec)
{
    try
    {
        dec = Convert.ToInt32(bit, 2);

        return true;
    }
    catch
    {
        dec = 0;
        return false;
    }
}

仮にエラーになるような文字列だとしても、例外には飛ばないようにします。

string bit = "gfg";

int dec;

if (TryBit2Dec(bit, out dec) == false)
{
    MessageBox.Show("変換に失敗しました。");
    return;
}
MessageBox.Show(dec.ToString());

まとめ

この記事が皆様の役に立てれば幸いです。

コメント

タイトルとURLをコピーしました