![](/img/trans.png)
[英]Problem to convert string binary (64 bits) to decimal (c++ in iphone)
[英]C++ converting binary(64 bits) to decimal
我使用字符串包含我的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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.