Risposte:
Uso:
#include <iostream>
...
std::cout << std::hex << a;
Esistono molte altre opzioni per controllare la formattazione esatta del numero di output , come zeri iniziali e maiuscoli / minuscoli.
ios::fmtflags f(cout.flags());
e ripristinarlo con out.flags(f);
.
std::cout.flags(f);
Per manipolare il flusso per stamparlo in formato esadecimale, utilizzare il hex
manipolatore:
cout << hex << a;
Per impostazione predefinita, i caratteri esadecimali vengono emessi in minuscolo. Per cambiarlo in maiuscolo usa il uppercase
manipolatore:
cout << hex << uppercase << a;
Per modificare in seguito l'output in minuscolo, utilizzare il nouppercase
manipolatore:
cout << nouppercase << b;
nouppercase
risultato tornerà in decimale?
Capisco che questo non è ciò che OP ha richiesto, ma penso comunque che valga la pena sottolineare come farlo con printf. Preferisco quasi sempre usarlo su std :: cout (anche senza uno sfondo C precedente).
printf("%.2X", a);
'2' definisce la precisione, 'X' o 'x' definisce il caso.
printf("hello\n")
equivale a fprintf(stdout, "hello\n")
. Più utilmente, puoi passare stdout
(o stdin
, o stderr
) a una funzione che accetta un FILE*
argomento.
Esistono diversi tipi di bandiere e maschere che puoi usare. Per ulteriori informazioni, consultare http://www.cplusplus.com/reference/iostream/ios_base/setf/
#include <iostream>
using namespace std;
int main()
{
int num = 255;
cout.setf(ios::hex, ios::basefield);
cout << "Hex: " << num << endl;
cout.unsetf(ios::hex);
cout << "Original format: " << num << endl;
return 0;
}
std::hex
ti dà la formattazione esadecimale, ma è un'opzione stateful, il che significa che devi salvare e ripristinare lo stato o avrà un impatto su tutto l'output futuro.
Tornare in modo ingenuo al ritorno std::dec
è positivo solo se prima c'erano le bandiere, il che potrebbe non essere il caso, in particolare se si sta scrivendo una libreria.
#include <iostream>
#include <ios>
...
std::ios_base::fmtflags f( cout.flags() ); // save flags state
std::cout << std::hex << a;
cout.flags( f ); // restore flags state
Questo combina la risposta e le informazioni di Greg Hewgill da un'altra domanda .
Utilizzare std::uppercase
e std::hex
per formattare la variabile intera a
da visualizzare in formato esadecimale.
#include <iostream>
int main() {
int a = 255;
// Formatting Integer
std::cout << std::uppercase << std::hex << a << std::endl; // Output: FF
std::cout << std::showbase << std::hex << a << std::endl; // Output: 0XFF
std::cout << std::nouppercase << std::showbase << std::hex << a << std::endl; // Output: 0xff
return 0;
}
cout << hex << a << dec;
cambiare qualcosa come .