将二进制转换为十进制内置函数

时间:2014-03-28 20:22:07

标签: c++ binary type-conversion decimal

我必须在C ++中进行二进制到十进制转换。

我知道如何手动执行此操作,但我想知道是否存在可以为我执行的功能。

例如,如果我有一个十进制数字,并且我想将其打印为另一个基数,我只使用setbase(base)。

std::cout<<std::setbase(16)<<20; // prints 20 in base 16.

有没有办法做类似的事情,但要从二进制转换为十进制?

4 个答案:

答案 0 :(得分:0)

std::string bin("1101");
int dec = std::stoi(bin, nullptr, 2); // dec = 13

阅读:stoi

答案 1 :(得分:0)

您可以将字符串转换为任何编号系统,如二进制,十六进制和十进制表示。这是使用以下功能完成的: stoi(string variable,nullptr,base)。 字符串变量是需要转换的变量。 nullptr指向size_t类型的对象,其值由函数设置为数值后字符串变量中下一个字符的位置。它可以是空指针。对于二进制16,Base可以是2,对于十六进制0,用于自动基本检测。 请注意,stoi函数是在C ++ 11中引入的。因此,请确保您的编译器设置正确和/或您的编译器支持C ++ 11.因此请确保您的设置与c ++ 11匹配。< / p>

答案 2 :(得分:0)

// s是二进制数字,作为字符串

    bitset<32> b(s);

    int dec=b.to_ulong();

答案 3 :(得分:0)

int binaryToDecimal(string s)
{
    bitset<64> bits(s);
    int number = bits.to_ulong();
    return number;
}