繁体   English   中英

C ++将二进制(64位)转换为十进制

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM