Pagpi-print ng Mga Halaga ng Hex sa C++

Pagpi Print Ng Mga Halaga Ng Hex Sa C



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 header. Ang manipulator na ito ay nagtuturo sa output stream na bigyang-kahulugan ang mga halaga ng integer bilang hexadecimal kapag nagpi-print. Isipin na mayroon kang isang kaban ng kayamanan na puno ng mga numero. Ngunit sa halip na ang karaniwang sistema ng decimal, lahat sila ay nakasulat sa lihim na wika ng hexadecimal. Upang matukoy ang mga code na ito at ipakita ang kanilang mga tunay na halaga, nag-aalok ang C++ ng isang kapaki-pakinabang na tool na tinatawag na 'std::hex'. Ang magic trick na ito sa library ay ginagawang isang decoder ring ang iyong output stream, na agad na isinasalin ang mga mahiwagang hexadecimal na numero sa kanilang pamilyar na mga katapat na decimal.







#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



: Ginagamit ito para sa pangunahing input/output tulad ng pag-print sa console at nagbibigay ng “std::hex” manipulator para i-format ang output bilang hexadecimal.





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 at 'std::hex' na diskarte, ang 'printf' ay nagbibigay ng isang maikli at direktang paraan upang makamit ang parehong resulta.

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

: Kasama sa header na ito ang function na “printf” at ang iba pang karaniwang input/output function. Ang header ay kasama sa suite ng mga library na kasama ng C++. Dinadala nito ang functionality mula sa library ng C language, na nagpapahintulot sa C++ na gamitin ang classic na input at output technique na orihinal na matatagpuan sa C sa pamamagitan ng inclusion.

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 header. Narito ang isang halimbawa kung paano mag-print ng halaga ng HEX na may padding. Ang program na ito ay nagpapakita kung paano mag-print ng isang hexadecimal na halaga sa C++ na may padding gamit ang header at mga pamamaraan ng manipulator.

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

: Ito ay nagbibigay ng pangunahing input/output functionality tulad ng “std::cout” stream para sa pag-print.

: Nag-aalok ito ng mga manipulator sa pag-format tulad ng “std::setw” na ginagamit para baguhin ang hitsura ng output.

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

: Nagbibigay ito ng pangunahing input/output functionality tulad ng “std::cout” at “std::hex” para sa pag-print.

: Nag-aalok ito ng mga manipulator sa pag-format tulad ng “std::setw” at “std::setfill” na ginagamit para baguhin ang hitsura ng output.

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 (byteData) << std::endl;” ang statement chain ay naglalapat ng maraming manipulator upang i-format ang output.

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 (byteData): Ini-cast nito ang hindi nalagdaang char data sa isang “int” bago i-convert sa hexadecimal. Hindi ito teknikal na kinakailangan ngunit maaaring gamitin para sa pagkakapare-pareho sa ilang mga opsyon sa pag-format.

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.