Mencetak Nilai Hex dalam C++

Mencetak Nilai Hex Dalam C



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 . Manipulator ini mengarahkan aliran keluaran untuk mentafsir nilai integer sebagai perenambelasan semasa mencetak. Bayangkan anda mempunyai peti harta karun yang penuh dengan nombor. Tetapi bukannya sistem perpuluhan biasa, semuanya ditulis dalam bahasa rahsia perenambelasan. Untuk menguraikan kod ini dan mendedahkan nilai sebenar mereka, C++ menawarkan alat berguna yang dipanggil 'std::hex'. Helah silap mata dalam pustaka ini mengubah strim output anda menjadi cincin penyahkod, menterjemahkan nombor perenambelasan misteri itu kepada rakan perpuluhan biasa mereka dengan serta-merta.







#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



: Ia digunakan untuk input/output asas seperti mencetak ke konsol dan menyediakan manipulator “std::hex” untuk memformatkan output sebagai perenambelasan.





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 dan 'std::hex', 'printf' menyediakan cara yang ringkas dan langsung untuk mencapai hasil yang sama.

#include
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

: Pengepala ini termasuk fungsi “printf” dan fungsi input/output standard yang lain. Pengepala disertakan dalam suite perpustakaan yang disertakan dengan C++. Ia membawa masuk fungsi daripada pustaka bahasa C, membolehkan C++ menggunakan teknik input dan output klasik yang pada asalnya ditemui dalam C melalui kemasukan .

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 . Berikut ialah contoh tentang cara mencetak nilai HEX dengan padding. Program ini menunjukkan cara mencetak nilai perenambelasan dalam C++ dengan pelapik menggunakan pengepala dan kaedah manipulator.

#include
#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

: Ia menyediakan kefungsian input/output asas seperti strim “std::cout” untuk mencetak.

: Ia menawarkan manipulator pemformatan seperti “std::setw” yang digunakan untuk mengubah suai rupa output.

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

: Ia menyediakan kefungsian input/output asas seperti “std::cout” dan “std::hex” untuk mencetak.

: Ia menawarkan manipulator pemformatan seperti “std::setw” dan “std::setfill” yang digunakan untuk mengubah suai rupa output.

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 (byteData) << std::endl;” rantai pernyataan menggunakan berbilang manipulator untuk memformat output.

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 (byteData): Ia menghantar data aksara yang tidak ditandatangani kepada “int” sebelum penukaran kepada perenambelasan. Ini tidak diperlukan secara teknikal tetapi boleh digunakan untuk konsisten dengan beberapa pilihan pemformatan.

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.