Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Chương trình C# chuyển chuỗi nhị phân sang số nguyên (Integer)

Chuyển chuỗi ký tự nhị phân (vd: "1001") thành số nguyên int. Có 2 cách: dùng built-in Convert.ToInt32 hoặc tự triển khai thuật toán.

Cách 1: Built-in (Khuyên dùng)

string binary = "1001";
int value = Convert.ToInt32(binary, 2); // 9

Cách 2: Tự triển khai (giáo dục)

using System;

class Program {
    static void Main() {
        string str = "1001";
        Console.WriteLine("Số nguyên: " + ConvertClass.Convert(str));
    }
}

public static class ConvertClass {
    public static int Convert(string str1) {
        if (string.IsNullOrEmpty(str1))
            throw new ArgumentException("Invalid input");
        
        int result = 0;
        for (int i = 0; i < str1.Length; i++) {
            char c = str1[i];
            if (c == '1') {
                // Bit tại vị trí i (từ trái) có trọng số 2^(len-1-i)
                result += (int)Math.Pow(2, str1.Length - 1 - i);
            } else if (c != '0') {
                throw new ArgumentException("Invalid binary digit: " + c);
            }
        }
        return result;
    }
}

Kết quả

Số nguyên: 9

Giải thích thuật toán

Chuỗi "1001" (length=4):

  • i=0, '1': 2^(4-1-0) = 2³ = 8
  • i=1, '0': bỏ qua
  • i=2, '0': bỏ qua
  • i=3, '1': 2^(4-1-3) = 2⁰ = 1
  • Tổng = 8 + 1 = 9

Lưu ý

  • Convert.ToInt32(str, 2) xử lý: chuỗi rỗng (throw), ký tự không hợp lệ (throw), số lớn (overflow → exception).
  • Tự viết: dùng result = result * 2 + (c - '0') hiệu quả hơn Math.Pow (tránh float, nhanh hơn).
  • Cách tối ưu:
foreach (char c in str) {
    result = result * 2 + (c - '0'); // c-'0' = 0 hoặc 1
}
  • Hỗ trợ long: Convert.ToInt64(str, 2).