2011-04-18 110 views

回答

14

默認情況下,基礎不打印:

cout << std::hex << std::showbase << i; 
+0

是的,我忘了showbase。謝謝。 +1和接受。 – 2011-04-18 16:49:54

7

最簡單的解決方案,當然是:

cout << "0x" << std::hex << i; 

前導零可量有所不同,因爲它們都不重要。你可以選擇任何你喜歡的數量。

+0

-1見鬼,爲什麼會要手動打印呢? – 2011-04-18 16:48:56

+0

@ Let_Me_Be:這是一個很好的問題。我贊成你的答案。 – progo 2011-04-18 16:49:58

+0

@Let_Me_Be爲什麼不,如果那就是你想要的?當有一個簡單的解決方案時,爲什麼使用一些複雜的機制。 – 2011-04-18 16:58:50

0

它應該顯示值爲i作爲十六進制數字 - 並且這樣做。前綴0x只是一些編程語言用於指示文字應被視爲十六進制。

cout << "0x" << std::hex << i; 

由於Let_Me_Be指出:"0x" << std::hex可以與std::hex << std::showbase,如果你想的0X/0 /沒有爲十六進制/八進制/十進制自動打印所取代。

6

我認爲它應該顯示0x02081。 Am I right

不,你不是。它將顯示十六進制的值,即20810x不是數字的一部分,本身,這只是一個符號方便。前導零也不是數字的一部分。

如果你願意,你說你的預期精確的輸出,你可以這樣做:

cout << std::hex << std::showbase << std::setw(5) << std::setfill('0') << i; 
+0

對於'setw()'和'setfill()'而言+1而對於基地的手動打印爲 – 2011-04-18 16:51:16

+0

@讓:再看一遍。 – 2011-04-18 16:52:01

+0

那裏有upvote。 – 2011-04-18 16:54:47