我必须在C ++中进行二进制到十进制转换。
我知道如何手动执行此操作,但我想知道是否存在可以为我执行的功能。
例如,如果我有一个十进制数字,并且我想将其打印为另一个基数,我只使用setbase(base)。
std::cout<<std::setbase(16)<<20; // prints 20 in base 16.
有没有办法做类似的事情,但要从二进制转换为十进制?
答案 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;
}