二进制到十进制的转换无法正常工作: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
找到更多详细信息
任何人都可以帮助我编写这段代码。我将 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
找到更多详细信息