[C#] 2進数の文字列を8進数、10進数、16進数に変換する方法

C#で2進数の文字列を8進数、10進数、16進数に変換するには、まずConvert.ToInt32メソッドを使用して2進数の文字列を整数に変換します。

次に、その整数を目的の進数に変換します。

例えば、10進数への変換はそのまま整数を使用し、8進数や16進数への変換はConvert.ToStringメソッドを使ってそれぞれ基数8や16で文字列に変換します。

この記事でわかること
  • 2進数を10進数に変換する方法
  • 2進数を8進数に変換する方法
  • 2進数を16進数に変換する方法
  • 他の進数から2進数への変換方法
  • 異なる進数間での変換方法

目次から探す

2進数を10進数に変換する方法

2進数を10進数に変換するには、各桁の値を計算し、合計します。

2進数の各桁は、右から左に向かって2の累乗を掛けていきます。

例えば、2進数の 1011 は次のように計算されます。

(

1 \times 2^3 + 0 \times 2^2 + 1 \times 2^1 + 1 \times 2^0 = 8 + 0 + 2 + 1 = 11

)

以下に、C#で2進数の文字列を10進数に変換するサンプルコードを示します。

using System;
class Program
{
    static void Main()
    {
        // 2進数の文字列
        string binaryString = "1011";
        
        // 2進数を10進数に変換
        int decimalValue = Convert.ToInt32(binaryString, 2);
        
        // 結果を表示
        Console.WriteLine($"2進数 {binaryString} は 10進数で {decimalValue} です。");
    }
}
2進数 1011 は 10進数で 11 です。

このコードでは、Convert.ToInt32メソッドを使用して、2進数の文字列を10進数に変換しています。

第2引数に基数(この場合は2)を指定することで、正しく変換が行われます。

2進数を8進数に変換する方法

2進数を8進数に変換するには、まず2進数を3桁ごとに区切り、それぞれのグループを8進数に変換します。

2進数の各桁は、右から左に向かって2の累乗を掛けていくため、3桁の2進数は1桁の8進数に対応します。

例えば、2進数の 101101 は次のように変換されます。

  1. 右から3桁ずつ区切る:10 110 1(不足分は0で埋める)
  2. 010 110 001に変換
  3. 各グループを8進数に変換:
  • 010 → 2
  • 110 → 6
  • 001 → 1

したがって、2進数の 101101 は8進数で 261 となります。

以下に、C#で2進数の文字列を8進数に変換するサンプルコードを示します。

using System;
class Program
{
    static void Main()
    {
        // 2進数の文字列
        string binaryString = "101101";
        
        // 2進数を10進数に変換
        int decimalValue = Convert.ToInt32(binaryString, 2);
        
        // 10進数を8進数に変換
        string octalValue = Convert.ToString(decimalValue, 8);
        
        // 結果を表示
        Console.WriteLine($"2進数 {binaryString} は 8進数で {octalValue} です。");
    }
}
2進数 101101 は 8進数で 261 です。

このコードでは、まず2進数の文字列を10進数に変換し、その後、Convert.ToStringメソッドを使用して10進数を8進数に変換しています。

これにより、簡単に2進数から8進数への変換が実現できます。

2進数を16進数に変換する方法

2進数を16進数に変換するには、まず2進数を4桁ごとに区切り、それぞれのグループを16進数に変換します。

4桁の2進数は1桁の16進数に対応します。

例えば、2進数の 11011011 は次のように変換されます。

  1. 右から4桁ずつ区切る:1101 1011
  2. 各グループを16進数に変換:
  • 1101 → D
  • 1011 → B

したがって、2進数の 11011011 は16進数で DB となります。

以下に、C#で2進数の文字列を16進数に変換するサンプルコードを示します。

using System;
class Program
{
    static void Main()
    {
        // 2進数の文字列
        string binaryString = "11011011";
        
        // 2進数を10進数に変換
        int decimalValue = Convert.ToInt32(binaryString, 2);
        
        // 10進数を16進数に変換
        string hexValue = Convert.ToString(decimalValue, 16).ToUpper();
        
        // 結果を表示
        Console.WriteLine($"2進数 {binaryString} は 16進数で {hexValue} です。");
    }
}
2進数 11011011 は 16進数で DB です。

このコードでは、まず2進数の文字列を10進数に変換し、その後、Convert.ToStringメソッドを使用して10進数を16進数に変換しています。

ToUpperメソッドを使うことで、16進数の文字を大文字にしています。

これにより、2進数から16進数への変換が簡単に行えます。

応用例:他の進数から2進数への変換

進数の変換は、プログラミングにおいて非常に重要なスキルです。

ここでは、10進数、8進数、16進数から2進数に変換する方法をそれぞれ解説します。

10進数から2進数に変換する方法

10進数を2進数に変換するには、10進数を2で割り、その余りを記録します。

割り算を繰り返し、余りを逆順に並べることで2進数が得られます。

以下に、C#で10進数を2進数に変換するサンプルコードを示します。

using System;
class Program
{
    static void Main()
    {
        // 10進数の値
        int decimalValue = 11;
        
        // 10進数を2進数に変換
        string binaryValue = Convert.ToString(decimalValue, 2);
        
        // 結果を表示
        Console.WriteLine($"10進数 {decimalValue} は 2進数で {binaryValue} です。");
    }
}
10進数 11 は 2進数で 1011 です。

8進数から2進数に変換する方法

8進数を2進数に変換するには、まず8進数の各桁を3桁の2進数に変換します。

以下に、C#で8進数を2進数に変換するサンプルコードを示します。

using System;
class Program
{
    static void Main()
    {
        // 8進数の文字列
        string octalString = "26";
        
        // 8進数を10進数に変換
        int decimalValue = Convert.ToInt32(octalString, 8);
        
        // 10進数を2進数に変換
        string binaryValue = Convert.ToString(decimalValue, 2);
        
        // 結果を表示
        Console.WriteLine($"8進数 {octalString} は 2進数で {binaryValue} です。");
    }
}
8進数 26 は 2進数で 101110 です。

16進数から2進数に変換する方法

16進数を2進数に変換するには、16進数の各桁を4桁の2進数に変換します。

以下に、C#で16進数を2進数に変換するサンプルコードを示します。

using System;
class Program
{
    static void Main()
    {
        // 16進数の文字列
        string hexString = "DB";
        
        // 16進数を10進数に変換
        int decimalValue = Convert.ToInt32(hexString, 16);
        
        // 10進数を2進数に変換
        string binaryValue = Convert.ToString(decimalValue, 2);
        
        // 結果を表示
        Console.WriteLine($"16進数 {hexString} は 2進数で {binaryValue} です。");
    }
}
16進数 DB は 2進数で 11011011 です。

これらのサンプルコードを使用することで、10進数、8進数、16進数から2進数への変換が簡単に行えます。

各進数の特性を理解し、適切な方法で変換を行いましょう。

応用例:異なる進数間での変換

異なる進数間での変換は、プログラミングにおいて非常に役立つスキルです。

ここでは、8進数から10進数、16進数から10進数、8進数から16進数への変換方法をそれぞれ解説します。

8進数から10進数に変換する方法

8進数を10進数に変換するには、各桁の値を計算し、合計します。

8進数の各桁は、右から左に向かって8の累乗を掛けていきます。

以下に、C#で8進数を10進数に変換するサンプルコードを示します。

using System;
class Program
{
    static void Main()
    {
        // 8進数の文字列
        string octalString = "26";
        
        // 8進数を10進数に変換
        int decimalValue = Convert.ToInt32(octalString, 8);
        
        // 結果を表示
        Console.WriteLine($"8進数 {octalString} は 10進数で {decimalValue} です。");
    }
}
8進数 26 は 10進数で 22 です。

16進数から10進数に変換する方法

16進数を10進数に変換するには、各桁の値を計算し、合計します。

16進数の各桁は、右から左に向かって16の累乗を掛けていきます。

以下に、C#で16進数を10進数に変換するサンプルコードを示します。

using System;
class Program
{
    static void Main()
    {
        // 16進数の文字列
        string hexString = "DB";
        
        // 16進数を10進数に変換
        int decimalValue = Convert.ToInt32(hexString, 16);
        
        // 結果を表示
        Console.WriteLine($"16進数 {hexString} は 10進数で {decimalValue} です。");
    }
}
16進数 DB は 10進数で 219 です。

8進数から16進数に変換する方法

8進数を16進数に変換するには、まず8進数を10進数に変換し、その後10進数を16進数に変換します。

以下に、C#で8進数を16進数に変換するサンプルコードを示します。

using System;
class Program
{
    static void Main()
    {
        // 8進数の文字列
        string octalString = "26";
        
        // 8進数を10進数に変換
        int decimalValue = Convert.ToInt32(octalString, 8);
        
        // 10進数を16進数に変換
        string hexValue = Convert.ToString(decimalValue, 16).ToUpper();
        
        // 結果を表示
        Console.WriteLine($"8進数 {octalString} は 16進数で {hexValue} です。");
    }
}
8進数 26 は 16進数で 16 です。

これらのサンプルコードを使用することで、8進数から10進数、16進数から10進数、8進数から16進数への変換が簡単に行えます。

進数の特性を理解し、適切な方法で変換を行いましょう。

よくある質問

2進数の文字列が無効な場合はどうなりますか?

無効な2進数の文字列(例えば、”102″や”abc”など)を変換しようとすると、FormatExceptionが発生します。

C#のConvert.ToInt32メソッドは、指定された基数に対して無効な文字列を受け取ると例外を投げるため、事前に文字列が正しい形式であるかを確認することが重要です。

以下のように、例外処理を用いてエラーハンドリングを行うことが推奨されます。

try
{
    int decimalValue = Convert.ToInt32(invalidBinaryString, 2);
}
catch (FormatException)
{
    Console.WriteLine("無効な2進数の文字列です。");
}

負の数を扱う場合はどうすればよいですか?

C#では、負の数を2進数で表現するために、通常は「2の補数」を使用します。

2の補数では、負の数を表現するために、まずその数の絶対値の2進数を求め、ビットを反転させた後、1を加えます。

例えば、-5を2進数で表現する場合、まず5の2進数(“0101”)を求め、ビットを反転させて”1010″にし、1を加えると”1011″になります。

負の数を扱う際は、適切な方法で2の補数を計算することが重要です。

大きな数値を扱う際の注意点はありますか?

大きな数値を扱う際には、データ型の制限に注意が必要です。

C#のint型は32ビットの符号付き整数で、-2,147,483,648から2,147,483,647までの範囲を持ちます。

これを超える数値を扱う場合は、long型(64ビット)やBigInteger型を使用することを検討してください。

特にBigIntegerは、任意の精度の整数を扱うことができるため、大きな数値の計算に適しています。

以下のように使用します。

using System.Numerics;
BigInteger largeNumber = BigInteger.Parse("123456789012345678901234567890");

これにより、大きな数値を安全に扱うことができます。

まとめ

この記事では、2進数の文字列を8進数、10進数、16進数に変換する方法や、逆に他の進数から2進数への変換方法について詳しく解説しました。

また、異なる進数間での変換や、特に注意が必要な点についても触れました。

これらの知識を活用することで、プログラミングにおける数値の取り扱いがよりスムーズになるでしょう。

ぜひ、実際にコードを試してみて、進数の変換に関する理解を深めてみてください。

  • URLをコピーしました!
目次から探す