我正在研究将std::string
中的二进制数解析为int
的函数。不知何故,它失败了。读取一个二进制数
int bin2dec(string &binstr)
{
unsigned int count = 0;
int dec = 0;
while (count < binstr.size()) {
if(binstr[count] == '1') {
dec += (dec + pow(2, count));
}
count++;
}
return dec;
}
您似乎将最左边的位视为最不重要最右边的比特是最重要的,这比通常使LS比特位于右边的惯例更向后。 – 2015-01-26 22:52:31
因为什么时候是'int' * decimal *?另外,在这里使用'pow'(因此是浮点)是一个非常糟糕的主意。 – Deduplicator 2015-01-26 22:53:23
我也这么认为,并试图扭转我挣扎的那串,然后它没有修复它。当我输入0001时,输出是8,因此你是对的,但是如果我输入1111,我得到32,所以我知道我也在做其他错误。 – budroothedog 2015-01-26 22:55:32