二进制到十进制的转换无法正常工作:C++

Binary to Decimal conversion not working properly: C++

任何人都可以帮助我编写这段代码。我将 0 或 1 的字符串中的数字乘以 2 的“幂”次方,这是一个整数,每次循环时都会递增,我将结果添加到 return 值......但是由于某种原因,它无法正常工作。

例如:“10”是 returning 48 而不是 2

#include <iostream>
#include <string>
#include <cmath>
#include <sstream>

using BINARY = unsigned long;
typedef int BI;

class Binary_
{
private:
std::string binary_string;
BINARY return_binary()
{
    BINARY result = 0;
    BI power = 0, binary_value = 0;
    for(int i = this->binary_string.length() - 1; i > 0; i--)
    {
        std::string binary_char_hold = std::to_string(this->binary_string[i]);
        std::stringstream Binary_stream(binary_char_hold);
        Binary_stream >> binary_value;
        result = result + (binary_value * pow(2, power));
        power++;
    }
    return result;
 }
 public :
    BINARY get_binary(std::string binary_string)
    {
        BINARY binary_val = 0;
        for (int i = 0; i < binary_string.length(); i++)
        {
            if (binary_string[i] == '0' || binary_string[i] == '1') { this->binary_string = 
            binary_string; binary_val = return_binary(); }
            else this->binary_string = "Binary value you entered is invalid and not of base 2 system!";
        }
        return binary_val;
    }
   };

对于您的问题,strtoull() 函数还有另一个更简单的实现。

可以在 C++: binary std::string to decimal

找到更多详细信息