Sa C++ programming, ang pag-print ng mga hexadecimal na halaga ay isang karaniwang kinakailangan. Gumagana man sa mga memory address, pagsasagawa ng mga pagpapatakbo ng Bitwise, o pakikitungo sa hexadecimal na representasyon ng data, mahalagang maunawaan ang iba't ibang paraan upang epektibong maipakita ang mga halaga ng hex. Sinasaliksik ng artikulong ito ang iba't ibang pamamaraan at diskarte upang i-print ang mga hexadecimal na halaga sa C++, na nagbibigay-liwanag sa kanilang mga aplikasyon at mga kaso ng paggamit.
Pagpi-print ng Hex Values Gamit ang Std::hex
Ang isang direktang paraan upang i-print ang mga hexadecimal na halaga sa C++ ay ang paggamit ng 'std::hex' na manipulator na ibinigay ng
#include
#include
int pangunahing ( ) {
int decimalValue = 907 ;
std::cout << 'Ang halaga ng Hexadecimal ay: ' << std::hex << decimalValue << std::endl;
bumalik 0 ;
}
Sa halimbawang ito, ang 'std::hex' na manipulator ay inilapat sa 'std::cout' na output stream bago i-print ang 'decimalValue' integer. Pagkatapos i-print ang hex value, ibabalik ang stream sa normal nitong gawi. Ang code na ito ay perpektong nagpapakita kung paano mag-print ng isang hexadecimal na halaga gamit ang 'std::hex' na manipulator sa C++. Narito ang isang breakdown ng code:
Mga header
Pangunahing Pag-andar
Ang 'int decimalValue = 907;' idineklara ang variable na “decimalValue” ng uri “int” at itinalaga ito ng decimal na value na 907.
Ang “std::cout << “Ang Hexadecimal value ay: ” << std::hex << decimalValue << std::endl;” nagpi-print ng “Hexadecimal value:” na sinusundan ng hexadecimal na representasyon ng “decimalValue.”
Ang “std::hex” ay nagtuturo sa output stream na bigyang-kahulugan ang sumusunod na value bilang hexadecimal. Ang variable na 'decimalValue' ay naglalaman ng decimal na halaga na iko-convert sa hex. Ang 'std::endl' ay naglalagay ng bagong linya na character pagkatapos ng pag-print. Panghuli, ipi-print na ngayon ng code na ito ang “Hexadecimal value: 38B” gaya ng makikita mo sa sumusunod na snippet ng output:
Pagpi-print ng Hex Values Gamit ang '%x' Format Specifier
Para sa mga pamilyar sa C programming language, ang function na 'printf' ay maigsi na nagpi-print ng mga hexadecimal na halaga sa C++. Habang ang C++ ay nag-aalok ng
int pangunahing ( ) {
int decimalValue = 1256 ;
printf ( 'Ang halaga ng Hexadecimal na may printf ay: %x \n ' , decimalValue ) ;
bumalik 0 ;
}
Sa halimbawang ito, ang specifier ng format na '%x' sa loob ng function na 'printf' ay nagpapahiwatig na ang katumbas na argumento ay dapat na i-print sa hexadecimal. Ang ibinigay na code ay isang perpektong halimbawa ng pag-print ng isang hexadecimal na halaga gamit ang 'printf' sa C++. Hatiin natin ito:
Mga header
Pangunahing Pag-andar
Ang 'int decimalValue = 1256;' idineklara at itinatalaga ang decimal na value ng 1256 sa isang integer variable na pinangalanang “decimalValue”. Ang 'printf' sa 'printf('Ang Hexadecimal value na may printf ay: %x\n', decimalValue);' Ang pahayag ay tumatawag sa function na 'printf' upang i-print ang na-format na output. Ang '%x' ay ang 'format specifier' na nagpapahiwatig na ang sumusunod na argumento ay dapat na i-print bilang isang maliit na titik na hexadecimal na numero. Panghuli, ang '\n' ay naglalagay ng bagong linyang character pagkatapos ng pag-print. Ang code na ito ay naglalabas ng 'Ang Hexadecimal value na may printf ay 4e8' sa console tulad ng nakikita sa sumusunod na output snippet:
Pagpi-print ng Hex Values gamit ang Padding
Kapag nakikitungo sa mga halaga ng hexadecimal, lalo na ang mga address ng memorya, madalas na kanais-nais ang isang pare-parehong lapad o padding. Magagawa ito gamit ang 'std::setw' manipulator na ibinigay ng
#include
int pangunahing ( ) {
int decimalValue = 47 ;
std::cout << 'Ang halaga ng Hexadecimal na may padding ay: ' << std::setw ( 8 ) << std::hex << decimalValue << std::endl;
bumalik 0 ;
}
Sa halimbawang ito, tinitiyak ng std::setw(8) na ang hexadecimal na halaga ay naka-print na may minimum na lapad na 8 character. Ito ay partikular na kapaki-pakinabang para sa pag-align ng mga halaga sa mga column o sa mga memory address.
Basagin natin ang code at unawain ang bawat linya nang paisa-isa:
Mga header
Pangunahing Pag-andar
Ang 'int decimalValue = 47;' idineklara at itinatalaga ang decimal na value na 47 sa isang integer variable na pinangalanang “decimalValue”.
Ang “std::cout << “Ang Hexadecimal value na may padding ay: ” << std::setw(8) << std::hex << decimalValue << std::endl;” ini-print ng statement ang hexadecimal na numero ng 47 na may setw(8) padding. Inilalapat ng “std::setw(8)” ang manipulator na “std::setw” na may argumentong 8, na tumutukoy sa minimum na lapad ng output na 8 character.
Inilalapat ng 'std::hex' ang manipulator na 'std::hex' na nagsasabi sa stream na bigyang-kahulugan ang susunod na halaga bilang hexadecimal gaya ng ipinaliwanag sa isa sa mga ibinigay na halimbawa. Ang sumusunod na output ay naka-print sa console:
Pagpi-print ng Hex Value ng Byte Data
Kapag nagtatrabaho sa byte data, karaniwan nang kinakatawan ang bawat byte bilang isang dalawang-digit na hexadecimal na halaga. Magagawa ito sa pamamagitan ng pagtiyak na ang lapad ay nakatakda sa 2 at paggamit ng 'std::setfill('0')' upang punan ang mga nangungunang zero. Ang sumusunod ay isang halimbawa upang matulungan kang maunawaan kung paano maaaring gawin ang pag-print ng mga hex na halaga ng byte data:
#include#include
int pangunahing ( ) {
unsigned char byteData = 0xAB;
std::cout << 'Ang Hexadecimal na representasyon ng byte data ay: '
<< std::setw ( 2 ) << std::setfill ( '0' ) << std::hex << static_cast < int > ( byteData )
<< std::endl;
bumalik 0 ;
}
Dito, tinitiyak ng 'std::setw(2)' na ang bawat byte ay kinakatawan ng isang minimum na lapad na 2 character, at ang 'std::setfill('0')' ay tumutukoy na ang mga nangungunang zero ay dapat gamitin upang punan ang lapad.
Ang dating ibinigay na programang ito ay nagpapakita ng isang mas advanced na diskarte sa pag-print ng isang hexadecimal na halaga sa C++ na may partikular na pag-format. Hatiin natin ito upang magkaroon ng mas mahusay na pag-unawa:
Mga header
Pangunahing Pag-andar
Sa pangunahing function, isang unsigned na 'byteData = 0xAB;' Ang char ay tinukoy na nagdedeklara ng isang hindi nalagdaang char na variable na pinangalanang 'byteData' at nagtatalaga ng hexadecimal na halaga ng '0xAB' dito. Ang “std::cout << “Ang Hexadecimal na representasyon ng byte data ay: “:” na pahayag ay naglalabas ng mensahe sa console gamit ang output stream.
Ang “<< std::setw(2) << std::setfill(‘0’) << std::hex << static_cast
std::setw(2): Itinakda nito ang minimum na lapad ng output sa 2 character.
std::setfill(‘0’): Ito ay tumutukoy na ang anumang padding na kailangan upang maabot ang minimum na lapad ay dapat punan ng “0” na character.
std::hex: Sinasabi nito sa stream na bigyang-kahulugan ang susunod na value bilang hexadecimal.
static_cast
std::endl: Naglalagay ito ng newline na character pagkatapos mag-print.
Ang output ng program na ito na naka-print sa console ay ipinapakita sa sumusunod na snippet:
Konklusyon
Ang pag-print ng mga halaga ng hexadecimal sa C++ ay nagsasangkot ng pag-unawa sa mga magagamit na tool at pagpili ng naaangkop na pamamaraan batay sa mga partikular na kinakailangan. Kung pipiliin mo man ang 'std::hex' na manipulator, ang 'printf' na function, o isang kumbinasyon ng mga tool sa pag-format para sa padding at nangungunang mga zero, ang pagkakaroon ng matatag na kaalaman sa mga diskarteng ito ay mahalaga para sa anumang C++ programmer. Sa pamamagitan ng maingat na paglalapat ng mga pamamaraang ito, maaari mong matiyak na ang iyong mga hexadecimal na halaga ay ipinapakita nang tumpak at sa isang visual na nakakaakit na format na nakakatulong sa pangkalahatang pagiging madaling mabasa at kalinawan ng iyong C++ code.