2009-11-29 113 views
1

這不過這裏有種構建了對Already asked question ... ,說,我給一個十六進制的輸入,可能是「0xFFFF的」 一個最大我需要它轉換爲二進制,這樣我最多可以達到16位。轉換爲二進制C++

我想知道如果使用'bitset'它會很簡單..任何想法?

編輯:

得到答案的,即興的一段代碼這裏後:http://pastebin.com/f7a6f0a69

+0

這取決於你所說的「十六進制輸入」。它是字符串「」0xFFFF「嗎? – sbi

+0

你對二進制的含義是什麼?一切在計算機上都是二進制的,包括十六進制值,浮點數,ASCII和Unicode字符。你的意思是一個標量/整數嗎? –

+0

由二進制,我的意思是「在物理位」.. – halluc1nati0n

回答

6

的「十六進制輸入」你的意思是包含一個十六進制數字的字符串假設,那麼這會工作:

const char* const str = "0xFFFF"; 
std::istringstream iss(str); 
int i; 
iss >> std::hex >> i; 
if(!iss && !iss.eof()) throw "dammit!"; 
std::cout << '"' << str << "\": " << i << "(0x" << std::hex << i << ")\n"; 
+3

+1「dammit!」 ;) –

+0

好吧,那真棒。但我不需要它在十進制中,我需要二進制。無論如何,我研究了一下,做了即興創作.. :)在這裏:http://pastebin.com/m401f1b79 – halluc1nati0n

+3

@ halluc1nati0n:我會建議你在你的問題措辭中更精確。任何變量實際上都是二進制的,在'iss >> std :: hex >> i'後面的值實際上是二進制形式。現在,你所要求的是轉換成一個表示二進制形式的字符串,這是一個不同的故事。如果你問了適當的問題,我相信你會在第一時間得到結果。 –