Dalam pengaturcaraan C++, mencetak nilai perenambelasan adalah keperluan biasa. Sama ada bekerja dengan alamat memori, menjalankan operasi Bitwise atau berurusan dengan perwakilan heksadesimal data, adalah penting untuk memahami pelbagai kaedah untuk memaparkan nilai heks dengan berkesan. Artikel ini meneroka pelbagai kaedah dan teknik untuk mencetak nilai heksadesimal dalam C++, memberi penerangan tentang aplikasi dan kes penggunaannya.
Mencetak Nilai Hex Menggunakan Std::hex
Satu cara mudah untuk mencetak nilai perenambelasan dalam C++ adalah menggunakan manipulator 'std::hex' yang disediakan oleh pengepala
#include
#include
int utama ( ) {
int nilai perpuluhan = 907 ;
std::cout << 'Nilai Heksadesimal ialah: ' << std::hex << nilai perpuluhan << std::endl;
kembali 0 ;
}
Dalam contoh ini, manipulator 'std::hex' digunakan pada aliran keluaran 'std::cout' sebelum mencetak integer 'Nilai perpuluhan'. Selepas mencetak nilai hex, strim dikembalikan kepada tingkah laku biasa. Kod ini menunjukkan dengan sempurna cara mencetak nilai perenambelasan menggunakan manipulator 'std::hex' dalam C++. Berikut ialah pecahan kod:
Pengepala
Fungsi utama
'Nilai perpuluhan int = 907;' mengisytiharkan pembolehubah “Nilai perpuluhan” jenis “int” dan memberikannya dengan nilai perpuluhan 907.
“std::cout << “Nilai Heksadesimal ialah: ” << std::hex << Nilai perpuluhan << std::endl;” mencetak “Nilai perenambelasan:” diikuti dengan perwakilan perenambelasan “Nilai perpuluhan”.
“std::hex” mengarahkan aliran output untuk mentafsir nilai berikut sebagai perenambelasan. Pembolehubah 'Nilai perpuluhan' mengandungi nilai perpuluhan untuk ditukar kepada heks. “std::endl” memasukkan aksara baris baharu selepas dicetak. Akhir sekali, kod ini kini mencetak 'Nilai heksadesimal: 38B' seperti yang anda boleh lihat dalam coretan output berikut:
Mencetak Nilai Hex Menggunakan Penentu Format “%x”.
Bagi mereka yang biasa dengan bahasa pengaturcaraan C, fungsi 'printf' mencetak nilai heksadesimal dalam C++ dengan ringkas. Walaupun C++ menawarkan pendekatan
int utama ( ) {
int nilai perpuluhan = 1256 ;
printf ( 'Nilai Heksadesimal dengan printf ialah: %x \n ' , Nilai perpuluhan ) ;
kembali 0 ;
}
Dalam contoh ini, penentu format '%x' dalam fungsi 'printf' menunjukkan bahawa hujah yang sepadan harus dicetak dalam perenambelasan. Kod yang diberikan ialah contoh sempurna untuk mencetak nilai heksadesimal menggunakan 'printf' dalam C++. Mari kita pecahkan:
Pengepala
Fungsi utama
'Nilai perpuluhan int = 1256;' mengisytiharkan dan memberikan nilai perpuluhan 1256 kepada pembolehubah integer bernama “Nilai perpuluhan”. 'printf' dalam 'printf('Nilai Heksadesimal dengan printf ialah: %x\n', nilai perpuluhan);' pernyataan memanggil fungsi 'printf' untuk mencetak output yang diformat. '%x' ialah 'penentu format' yang menunjukkan bahawa hujah berikut harus dicetak sebagai nombor perenambelasan huruf kecil. Akhir sekali, “\n” memasukkan aksara baris baharu selepas dicetak. Kod ini mengeluarkan 'Nilai Heksadesimal dengan printf ialah 4e8' kepada konsol seperti yang dilihat dalam coretan output berikut:
Mencetak Nilai Hex dengan Padding
Apabila berurusan dengan nilai heksadesimal, terutamanya alamat memori, lebar atau padding yang konsisten selalunya diingini. Ini boleh dicapai menggunakan manipulator “std::setw” yang disediakan oleh pengepala
#include
int utama ( ) {
int nilai perpuluhan = 47 ;
std::cout << 'Nilai Heksadesimal dengan pelapik ialah: ' << std::setw ( 8 ) << std::hex << nilai perpuluhan << std::endl;
kembali 0 ;
}
Dalam contoh ini, std::setw(8) memastikan bahawa nilai perenambelasan dicetak dengan lebar minimum 8 aksara. Ini amat berguna untuk menjajarkan nilai dalam lajur atau dengan alamat memori.
Marilah kita memecahkan kod dan memahami setiap baris satu demi satu:
Pengepala
Fungsi utama
'int nilai perpuluhan = 47;' mengisytiharkan dan memberikan nilai perpuluhan 47 kepada pembolehubah integer bernama “Nilai perpuluhan”.
“std::cout << “Nilai Heksadesimal dengan padding ialah: ” << std::setw(8) << std::hex << Nilai perpuluhan << std::endl;” pernyataan mencetak nombor perenambelasan 47 dengan pelapik setw(8). “std::setw(8)” menggunakan manipulator “std::setw” dengan hujah 8, menentukan lebar output minimum 8 aksara.
'std::hex' menggunakan manipulator 'std::hex' yang memberitahu aliran untuk mentafsir nilai seterusnya sebagai perenambelasan seperti yang dijelaskan dalam salah satu contoh yang diberikan. Output berikut dicetak ke konsol:
Mencetak Nilai Hex Data Byte
Apabila bekerja dengan data bait, adalah lazim untuk mewakili setiap bait sebagai nilai heksadesimal dua digit. Ini boleh dicapai dengan memastikan bahawa lebar ditetapkan kepada 2 dan menggunakan 'std::setfill('0')' untuk mengisi sifar pendahuluan. Berikut ialah contoh untuk membantu anda memahami cara mencetak nilai heks data bait boleh dilakukan:
#include#include
int utama ( ) {
char byteData yang tidak ditandatangani = 0xAB;
std::cout << 'Perwakilan Heksadesimal bagi data bait ialah: '
<< std::setw ( 2 ) << std::setfill ( '0' ) << std::hex << static_cast < int > ( byteData )
<< std::endl;
kembali 0 ;
}
Di sini, 'std::setw(2)' memastikan bahawa setiap bait diwakili dengan lebar minimum 2 aksara, dan 'std::setfill('0')' menentukan bahawa sifar pendahuluan harus digunakan untuk mengisi lebar.
Program yang diberikan sebelum ini menunjukkan pendekatan yang lebih maju untuk mencetak nilai perenambelasan dalam C++ dengan pemformatan khusus. Marilah kita memecahkannya untuk mempunyai pemahaman yang lebih baik:
Pengepala
Fungsi utama
Dalam fungsi utama, 'byteData = 0xAB;' yang tidak ditandatangani char ditakrifkan yang mengisytiharkan pembolehubah char yang tidak ditandatangani bernama 'byteData' dan memberikan nilai perenambelasan '0xAB' kepadanya. Pernyataan “std::cout << “Perwakilan Heksadesimal bagi data bait ialah: “:” menghasilkan mesej kepada konsol menggunakan aliran keluaran.
“<< std::setw(2) << std::setfill(‘0’) << std::hex << static_cast
std::setw(2): Ia menetapkan lebar output minimum kepada 2 aksara.
std::setfill(‘0’): Ia menyatakan bahawa sebarang padding yang diperlukan untuk mencapai lebar minimum hendaklah diisi dengan aksara '0'.
std::hex: Ia memberitahu strim untuk mentafsir nilai seterusnya sebagai perenambelasan.
static_cast
std::endl: Ia memasukkan aksara baris baharu selepas dicetak.
Output program ini yang dicetak pada konsol ditunjukkan dalam coretan berikut:
Kesimpulan
Mencetak nilai perenambelasan dalam C++ melibatkan pemahaman alat yang tersedia dan memilih kaedah yang sesuai berdasarkan keperluan khusus. Sama ada anda memilih manipulator 'std::hex', fungsi 'printf' atau gabungan alat pemformatan untuk pelapik dan sifar pendahuluan, mempunyai pemahaman yang kukuh tentang teknik ini adalah penting untuk mana-mana pengaturcara C++. Dengan menggunakan kaedah ini dengan teliti, anda boleh memastikan bahawa nilai perenambelasan anda dipaparkan dengan tepat dan dalam format yang menarik secara visual yang menyumbang kepada kebolehbacaan dan kejelasan keseluruhan kod C++ anda.