我的函数使用Horner将bin转换为dec有什么问题

Whats wrong with my function converting bin to dec using Horner?

本文关键字:dec 什么 问题 转换 bin 函数 Horner 我的      更新时间:2024-05-09
int bintodec(string s)
{
int W=(s[s.size()-1] - 48);
int x=2;
for(int i=s.size()-2; i>=0; i--)
{
W=W*x+(s[i] - 48);
}
return W;
}

例如;1011〃;它给出13;1010〃;它给出5。我做错了什么?

您在错误的方向上迭代,并且可能读取字符串的末尾。

#include <string>
#include <climits>
int bintodec(std::string s)
{
if (s.size() > (sizeof(int) * CHAR_BIT)) throw std::runtime_error("input too long");
int W = 0;
for(char c : s)
{
W *= 2;
W += (c - '0');
}
return W;
}