2013-05-13 106 views
0

我使用字符串來包含我的64位二進制。C++將二進制(64位)轉換爲十進制

string aBinary; 
aBinary = "100011111011101100000101101110000100111000011100100100110101100"; 

起初,我嘗試了一些二進制這個..

stringstream ss; 
ss << bitset<64>(aBinary).to_ulong(); 
buffer = ss.str(); 

cout << buffer << endl; 

的工作,但是這一次它不工作。我怎樣才能將包含在一個字符串容器中的上述64位二進制轉換爲一個字符串容器的十進制。

+2

你可能想嘗試'to_ullong'。 – chris 2013-05-13 03:35:43

回答

1

它溢出了,因爲to_ulong()是32位。

C++ - 11引入了函數to_ullong(),這是你想要的。如果你沒有,你可以嘗試將你的字符串分成兩部分,得到兩個32位數字,轉換爲64位,做一個移位和一個添加。

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); 
+0

下一次,請嘗試詳細說明你在做什麼,謝謝! – Zyerah 2013-05-13 04:01:50

+0

抱歉。 – Rick 2013-05-13 05:34:22

相關問題