【发布时间】:2013-04-25 17:37:33
【问题描述】:
我想将二进制计数转换为十进制。我的代码 sn-p :
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 的问题吗?我是真的吗?
谢谢,
对不起我的英语
【问题讨论】:
-
你也应该为你的缩进道歉:-)
-
字符串
"100"的第一个字符是'1',所以循环中给wynik的第一个赋值是1 * pow(2,0) + 0。 -
您可能需要查看
std::stoi或std::strtol。 -
英文变量名很适合帮助别人理解你的代码:)
-
@pytajnik:实际上,研究您的代码,它令人惊讶地接近正确!唯一的问题是您正在反向解析数字。您正在为
1000做数学运算,就好像它是0001。而二进制转换为十进制的确实是1。
标签: c++ binary decimal converter