2014-03-28 80 views
0

我必須在C++中進行二進制轉換爲十進制轉換。將二進制轉換爲十進制內置函數

我知道如何手動做到這一點,但我想知道是否存在一個功能,可以爲我做到這一點。

例如,如果我有一個十進制數,我想打印它作爲其他基數,我只使用setbase(base)。

std::cout<<std::setbase(16)<<20; // prints 20 in base 16. 

是否有任何方式做類似的事情,但從二進制轉換爲十進制?

+1

[C++二進制到十進制]可能的重複(http://stackoverflow.com/questions/19627521/c-binary-to-decimal) – PlasmaPower

+1

GCC和clang都支持二進制文字,所以你可以這樣做:'std :: cout << std :: setbase(16)<< 0b101010101;'。 –

+0

二進制文字也是即將到來的C++ 14標準的一部分。 –

回答

0
std::string bin("1101"); 
int dec = std::stoi(bin, nullptr, 2); // dec = 13 

閱讀:stoi

0

可以字符串轉換爲任何編號系統類似二進制,十六進制和十進制表示。這是使用以下功能完成的: stoi(string variable,nullptr,base)。 字符串變量是需要轉換的變量。 nullptr指向size_t類型的對象,其值由函數設置爲在數值後面的字符串變量中的下一個字符的位置。它可以是空指針。對於自動基礎檢測,基數可以是二進制16,十六進制0。 請注意,stoi函數是在C++ 11中引入的。因此請確保您的編譯器設置正確,並且/或者您的編譯器支持C++ 11.因此請確保您的設置與C++ 11匹配。

相關問題