Chcę zrobić:
int a = 255;
cout << a;
i pokaże FF na wyjściu, jak bym to zrobił?
Posługiwać się:
#include <iostream>
...
std::cout << std::hex << a;
Istnieje wiele innych opcji kontrolowania dokładnego formatowania numeru wyjściowego , na przykład zera wiodące i wielkie / małe litery.
cout << hex << a << dec;
zmienić to z powrotem.ios::fmtflags f(cout.flags());
i przywrócić go za pomocąout.flags(f);
.std::cout.flags(f);
std::hex
jest zdefiniowany, w<ios>
którym jest uwzględniony przez<iostream>
. Ale aby używać rzeczy takich jakstd::setprecision/std::setw/std::setfill
/ etc, musisz dołączyć<iomanip>
.źródło
Aby manipulować strumieniem w celu wydrukowania w formacie szesnastkowym, użyj
hex
manipulatora:Domyślnie znaki szesnastkowe są zapisywane małymi literami. Aby zmienić to na wielkie litery, użyj
uppercase
manipulatora:Aby później zmienić wyjście z powrotem na małe litery, użyj
nouppercase
manipulatora:źródło
nouppercase
zmieni wyjście z powrotem na dziesiętne?Jeśli chcesz wydrukować pojedynczą liczbę szesnastkową, a następnie powrócić do dziesiętnej, możesz użyć tego:
źródło
Rozumiem, że nie o to prosił OP, ale nadal uważam, że warto wskazać, jak to zrobić z printf. Prawie zawsze wolę używać go zamiast std :: cout (nawet bez poprzedniego tła C).
„2” określa dokładność, „X” lub „x” określa wielkość liter.
źródło
printf("hello\n")
jest równoważnefprintf(stdout, "hello\n")
. Bardziej użytecznie możesz przekazaćstdout
(lubstdin
, lubstderr
) do funkcji, która przyjmujeFILE*
argument.Istnieją również różne rodzaje flag i masek, których możesz użyć. Więcej informacji można znaleźć pod adresem http://www.cplusplus.com/reference/iostream/ios_base/setf/ .
źródło
std::hex
wyświetla formatowanie szesnastkowe, ale jest to opcja stanowa, co oznacza, że musisz zapisać i przywrócić stan, w przeciwnym razie wpłynie to na wszystkie przyszłe wyniki.Naiwne przełączanie się z powrotem na
std::dec
jest dobre tylko wtedy, gdy tam były wcześniej flagi, co może nie mieć miejsca, szczególnie jeśli piszesz bibliotekę.To łączy odpowiedź Grega Hewgilla i informacje z innego pytania .
źródło
Użyj
std::uppercase
i,std::hex
aby sformatować zmienną całkowitą,a
która ma być wyświetlana w formacie szesnastkowym.źródło