C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#でバイナリ文字列を整数に変換する方法|サンプルコード付きで解説

C#でバイナリ文字列(「0」と「1」で構成される文字列)を整数に変換するには、Convert.ToInt32メソッドInt32.Parseなどを活用します。本記事では、文字列の各文字を解析して2進数として計算するカスタム実装の例を、実際のコードとともにわかりやすく解説します。

変換の基本的な考え方

まず、変換対象となるバイナリ文字列を用意します。

string str = "1001";

次に、文字列内の各文字を1つずつ解析していきます。

try {
    // 渡された文字列の各文字を解析
    val = Int32.Parse(str1[i].ToString());
    if (val == 1)
        result += (int) Math.Pow(2, str1.Length - 1 - i);
    else if (val > 1)
        throw new Exception("Invalid!");
} catch {
    throw new Exception("Invalid!");
}

この処理では、forループを使って渡された文字列(例:「1001」)の各文字を順番にチェックします。文字列の長さはLengthプロパティで取得できます。

str1.Length

各文字が「1」であれば、その桁に対応する2のべき乗(2^(文字列の長さ − 1 − インデックス))を結果に加算します。「0」でも「1」でもない値が含まれている場合は、無効な入力として例外をスローする仕組みです。

サンプルコード

以下のコードを実行すると、C#でバイナリ文字列を整数に変換できます。

using System;
class Program {
    static void Main() {
        string str = "1001";
        Console.WriteLine("Integer:" + ConvertClass.Convert(str));
    }
}
public static class ConvertClass {
    public static int Convert(string str1) {
        if (str1 == "")
            throw new Exception("Invalid input");
        int val = 0, res = 0;
        for (int i = 0; i < str1.Length; i++) {
            try {
                val = Int32.Parse(str1[i].ToString());
                if (val == 1)
                    res += (int)Math.Pow(2, str1.Length - 1 - i);
                else if (val > 1)
                    throw new Exception("Invalid!");
            } catch {
                throw new Exception("Invalid!");
            }
        }
        return res;
    }
}

出力結果

Integer:9

この例では、バイナリ文字列「1001」が整数「9」に変換されます。「1001」を2進数として計算すると、1×8 + 0×4 + 0×2 + 1×1 = 9 となるためです。

補足:Convert.ToInt32ならもっと簡単

自前でロジックを書かなくても、Convert.ToInt32メソッドの第2引数に基数「2」を指定すれば、バイナリ文字列を直接整数に変換できます。

string str = "1001";
int num = Convert.ToInt32(str, 2); // 結果: 9

用途に応じて、柔軟なカスタム実装とシンプルな組み込みメソッドを使い分けるとよいでしょう。

  1. 【Python入門】リストを文字列に変換する4つの方法を徹底解説

    本記事では、Pythonでリスト(list)型のデータを文字列(string)型に変換する方法について、代表的な4つのアプローチをサンプルコードとともにわかりやすく解説します。 問題設定 与えられたリストを、ひとつながりの文字列に変換することを目標とします。例えば、複数の文字列要素を持つリストを結合して、単一の文字列として扱いたいケースなどが該当します。 ここでは、以下の4つの異なるアプローチを順番に見ていきましょう。 方法1: 空の文字列への連結(forループ) 最も基本的な方法は、空の文字列を用意し、forループでリストの各要素を順番に連結していくやり方です。処理の流れが直感的で、初心者

  2. Pythonで文字列をバイナリ(2進数)に変換する方法をわかりやすく解説

    Pythonで文字列をバイナリに変換する基本の考え方Pythonで文字列をバイナリ(2進数)表現に変換するには、文字列内の各文字を1つずつ取り出し、それぞれを2進数へ変換したうえで、結果をひとつの文字列として連結します。各文字の文字コードは ord() 関数で取得でき、format() 関数に「b」フォーマット指定子を渡すことで、簡単に2進数形式へ整形できます。format() と ord() を使った変換方法最もシンプルなのが、format(ord(x), b) を使って各文字 x を2進数の文字列に変換する方法です。次の例では、文字列 hello world の各文字をスペース区切りのバイ