Aku ingin melakukan:
int a = 255;
cout << a;
dan minta FF ditampilkan di keluaran, bagaimana saya melakukan ini?
Menggunakan:
#include <iostream>
...
std::cout << std::hex << a;
Ada banyak opsi lain untuk mengontrol pemformatan yang tepat dari nomor keluaran , seperti angka nol di depan dan huruf besar / kecil.
cout << hex << a << dec;
untuk mengubahnya kembali.ios::fmtflags f(cout.flags());
dan mengembalikannyaout.flags(f);
.std::cout.flags(f);
std::hex
didefinisikan di<ios>
mana termasuk oleh<iostream>
. Tetapi untuk menggunakan hal-hal sepertistd::setprecision/std::setw/std::setfill
/ etc Anda harus memasukkan<iomanip>
.sumber
Untuk memanipulasi aliran untuk mencetak dalam heksadesimal, gunakan
hex
manipulator:Secara default karakter heksadesimal adalah output dalam huruf kecil. Untuk mengubahnya menjadi huruf besar, gunakan
uppercase
manipulator:Untuk mengubah output kembali menjadi huruf kecil, gunakan
nouppercase
manipulator:sumber
nouppercase
akan mengubah output kembali ke desimal?Jika Anda ingin mencetak nomor hex tunggal, dan kembali ke desimal Anda dapat menggunakan ini:
sumber
Saya mengerti ini bukan apa yang diminta OP, tapi saya masih merasa perlu untuk menunjukkan bagaimana melakukannya dengan printf. Saya hampir selalu lebih suka menggunakannya daripada std :: cout (bahkan tanpa latar belakang C sebelumnya).
'2' mendefinisikan presisi, 'X' atau 'x' mendefinisikan case.
sumber
printf("hello\n")
setara denganfprintf(stdout, "hello\n")
. Lebih berguna, Anda bisa meneruskanstdout
(ataustdin
, ataustderr
) ke fungsi yang mengambilFILE*
argumen.Ada berbagai jenis bendera & topeng yang dapat Anda gunakan juga. Silakan merujuk http://www.cplusplus.com/reference/iostream/ios_base/setf/ untuk informasi lebih lanjut.
sumber
std::hex
memberi Anda format hex, tetapi ini adalah opsi stateful, yang berarti Anda perlu menyimpan dan memulihkan keadaan atau itu akan berdampak pada semua output di masa depan.Mengalihkan kembali secara naif
std::dec
hanya baik jika di situlah letak bendera sebelumnya, yang mungkin tidak demikian, terutama jika Anda sedang menulis perpustakaan.Ini menggabungkan jawaban dan info Greg Hewgill dari pertanyaan lain .
sumber
Gunakan
std::uppercase
danstd::hex
untuk memformat variabel integera
untuk ditampilkan dalam format heksadesimal.sumber