我使用string来包含64位二进制文件。
string aBinary;
aBinary = "100011111011101100000101101110000100111000011100100100110101100";
最初我试过这个..
stringstream ss;
ss << bitset<64>(aBinary).to_ulong();
buffer = ss.str();
cout << buffer << endl;
它适用于某些二进制文件,但是这个它不起作用。如何将包含在字符串容器中的上述64位二进制文件转换为字符串容器中的小数。
答案 0 :(得分:1)
它溢出,因为to_ulong()
是32位。
C ++ - 11引入了函数to_ullong()
,这就是你想要的。如果没有,可以尝试将字符串拆分为两个,获取两个32位数字,转换为64位,执行移位和添加。
答案 1 :(得分:0)
也许你可以用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);