C++将二进制(64位)转换为十进制
问题描述:
我使用字符串来包含我的64位二进制。C++将二进制(64位)转换为十进制
string aBinary;
aBinary = "100011111011101100000101101110000100111000011100100100110101100";
起初,我尝试了一些二进制这个..
stringstream ss;
ss << bitset<64>(aBinary).to_ulong();
buffer = ss.str();
cout << buffer << endl;
的工作,但是这一次它不工作。我怎样才能将包含在一个字符串容器中的上述64位二进制转换为一个字符串容器的十进制。
答
它溢出了,因为to_ulong()
是32位。
C++ - 11引入了函数to_ullong()
,这是你想要的。如果你没有,你可以尝试将你的字符串分成两部分,得到两个32位数字,转换为64位,做一个移位和一个添加。
答
也许你可以使用C做了它:
char *Str = "0100011111011101100000101101110000100111000011100100100110101100";
char *ptr = NULL;
unsigned long long toValue;
toValue = 0;
ptr = Str + strlen(Str) - 1;
for(int i = 0 ; i < strlen(Str) , ptr != Str ; i++,ptr--)
{
if(*ptr != '0')
toValue += ((unsigned long long)1 << i);
}
printf("%d\n",toValue);
你可能想尝试'to_ullong'。 – chris 2013-05-13 03:35:43