如何将char的值转换为int

How can I get value of char to convert to int?

本文关键字:转换 int char      更新时间:2023-10-16

我想将二进制计数转换为十进制计数。我的代码片段:

int main(){
    string count;
    char number;
    int counter;
    int score = 0;
    cout << "Wpisz liczbę w systemie binarnym" << endl;
    cin >> count;
    count << endl;
    counter = count.length();
    for (int i = 0; i < counter; i++)
    {
        number = count[i];
        int aaa = (int) number - '0' // is that correct ? I think not.
        score = aaa * pow(2,i) + score;
    }
    count <<wynik;
    return 0;
}

但是我的程序给出非常奇怪的分数,例如:

输入:100(十进制8)输出:1

输入1000(十进制16)输出:1

我不知道为什么。你能帮我吗?我认为这就是char的问题所在?我说的是真的吗?

谢谢,

Sorry for my english

试一试:

int main(){
    string liczba;
    int licznik;
    int wynik = 0;
    cout << "Wpisz liczb w systemie binarnym" << endl;
    cin >> liczba;
    licznik = liczba.length();
    for (int i = 0; i < licznik; i++)
    {
        int aaa = liczba[i] -'0'; // A bit hacky way to convert char to int
        wynik += aaa * pow(2.0,licznik - i - 1); // Minus 1 to get the correct power
    }
    cout << wynik;
    return 0;
}

不知道你从哪里得到的count从你的代码,但我认为你实际上是指cout
有关字符转换的更多信息,请参阅此问题。

另外,正如其他人指出的那样,当从索引为0的字符串中读取字符时,您将取出的二进制数字,其重要性降低。这意味着你的指数应该是递减的,而不是递增的。

编辑:我也注意到在你的问题中你读二进制错误:

输入:100(十进制8)输出:1
输入1000(十进制16)输出:1

100是4,不是8。同样,1000是8,而不是16。也许你忘记了2^0,或者1的数字?

另一种方法是取消强制转换为from double类型的pow。

int main(){
    string liczba;
    int licznik;
    int wynik = 0;
    cout << "Wpisz liczb w systemie binarnym" << endl;
    cin >> liczba;
    licznik = liczba.length();
    for (int i = 0; i < licznik; i++)
    {
        int aaa = liczba[i] -'0'; // A bit hacky way to convert char to int
        wynik *= 2;   // shift existing total up a power of 2 (could use << 1) 
        wynik += aaa; // Add the next digit
    }
    cout << wynik;
    return 0;
}