Я пытаюсь сделать двоичный преобразователь, однако проблема в том, что, когда я его собираю, он обычно расшифровывает мой тестовый номер «101», который должен быть 5 во что-то вроде 300 - 3000.
int main()
{
char a;
string bintered;
int bincrypted = 0, bincrypter;
cout<<"Would you like to try the binary to decimal converter? Y/N"<<endl;
cin>>a;
if (a == 'Y' || a == 'y')
{
cout<<"Ok, enter a binary number and we will decrypt it > ";
cin>>bintered;
int x = bintered.length() - 1; //multiplier counting down
int y = 0;
int power = 0;
while (x != -1)
{
power = bintered[y] * pow(2.0, x);
bincrypted = bincrypted + power;
y++;
x = x - 1;
}
cout<<"Final answer is: "<<bincrypted<<endl;
}
return 0;
}
Когда я попытался сделать cout<<bintered[y] * pow(2.0, x);
, мне дали 196, 96 и 49 для трех петель.Я неправильно использую функцию pow или как?