unsigned int i = 0x02081;
cout << std::hex << i;
這顯示2081與VS2010編譯時,但我認爲它應該顯示0x02081。我是對的嗎?如果是這樣,這怎麼解決?無法顯示在十六進制
unsigned int i = 0x02081;
cout << std::hex << i;
這顯示2081與VS2010編譯時,但我認爲它應該顯示0x02081。我是對的嗎?如果是這樣,這怎麼解決?無法顯示在十六進制
默認情況下,基礎不打印:
cout << std::hex << std::showbase << i;
最簡單的解決方案,當然是:
cout << "0x" << std::hex << i;
前導零可量有所不同,因爲它們都不重要。你可以選擇任何你喜歡的數量。
-1見鬼,爲什麼會要手動打印呢? – 2011-04-18 16:48:56
@ Let_Me_Be:這是一個很好的問題。我贊成你的答案。 – progo 2011-04-18 16:49:58
@Let_Me_Be爲什麼不,如果那就是你想要的?當有一個簡單的解決方案時,爲什麼使用一些複雜的機制。 – 2011-04-18 16:58:50
它應該顯示值爲i
作爲十六進制數字 - 並且這樣做。前綴0x
只是一些編程語言用於指示文字應被視爲十六進制。
cout << "0x" << std::hex << i;
由於Let_Me_Be指出:"0x" << std::hex
可以與std::hex << std::showbase
,如果你想的0X/0 /沒有爲十六進制/八進制/十進制自動打印所取代。
我認爲它應該顯示0x02081。 Am I right
不,你不是。它將顯示十六進制的值,即2081
。 0x
不是數字的一部分,本身,這只是一個符號方便。前導零也不是數字的一部分。
如果你願意,你說你的預期精確的輸出,你可以這樣做:
cout << std::hex << std::showbase << std::setw(5) << std::setfill('0') << i;
對於'setw()'和'setfill()'而言+1而對於基地的手動打印爲 – 2011-04-18 16:51:16
@讓:再看一遍。 – 2011-04-18 16:52:01
那裏有upvote。 – 2011-04-18 16:54:47
是的,我忘了showbase。謝謝。 +1和接受。 – 2011-04-18 16:49:54