Hex vērtību drukāšana programmā C++

Hex Vertibu Drukasana Programma C



C++ programmēšanā heksadecimālo vērtību drukāšana ir izplatīta prasība. Neatkarīgi no tā, vai strādājat ar atmiņas adresēm, veicat Bitwise darbības vai nodarbojas ar datu heksadecimālo attēlojumu, ir svarīgi saprast dažādas metodes, lai efektīvi parādītu heksadecimālās vērtības. Šajā rakstā ir apskatītas dažādas metodes un paņēmieni heksadecimālo vērtību drukāšanai valodā C++, izskaidrojot to lietojumus un lietošanas gadījumus.

Hex vērtību drukāšana, izmantojot Std::hex

Viens vienkāršs veids, kā drukāt heksadecimālās vērtības programmā C++, ir izmantot “std::hex” manipulatoru, ko nodrošina galvene. Šis manipulators uzdod izvades straumei interpretēt veselo skaitļu vērtības kā heksadecimālās drukāšanas laikā. Iedomājieties, ka jums ir dārgumu lāde, kas pilna ar cipariem. Bet parastās decimālās sistēmas vietā tie visi ir rakstīti heksadecimālā slepenajā valodā. Lai atšifrētu šos kodus un atklātu to patiesās vērtības, C++ piedāvā noderīgu rīku ar nosaukumu “std::hex”. Šis maģiskais triks bibliotēkā pārveido jūsu izvades straumi dekodētāja gredzenā, uzreiz pārvēršot šos noslēpumainos heksadecimālos skaitļus pazīstamos decimālskaitļos.







#include
#include
int galvenais ( ) {
int decimalValue = 907 ;
std::cout << 'Heksadecimālā vērtība ir: << std::hex << decimalValue << std::endl;
atgriezties 0 ;
}


Šajā piemērā manipulators “std::hex” tiek lietots “std::cout” izvades straumē pirms veselā skaitļa “decimalValue” drukāšanas. Pēc heksadecimālās vērtības drukāšanas straume tiek atjaunota uz parasto darbību. Šis kods lieliski parāda, kā izdrukāt heksadecimālo vērtību, izmantojot C++ manipulatoru “std::hex”. Šeit ir koda sadalījums:



Virsraksti



: to izmanto pamata ievadei/izvadei, piemēram, drukāšanai uz konsoli, un nodrošina “std::hex” manipulatoru, lai formatētu izvadi kā heksadecimālu.





Galvenā funkcija

“int decimalValue = 907;” deklarē “int” tipa mainīgo “decimalValue” un piešķir tam decimālo vērtību 907.



“std::cout << “Heksadecimālā vērtība ir: ” << std::hex << decimalValue << std::endl;” izdrukā “Hexadecimal value:”, kam seko “decimalValue” heksadecimālais attēlojums.

“std::hex” norāda izvades straumei interpretēt tālāk norādīto vērtību kā heksadecimālo. Mainīgais “decimalValue” satur decimālvērtību, kas jāpārvērš hex. “std::endl” pēc drukāšanas ievieto jaunas rindiņas rakstzīmi. Visbeidzot, šis kods tagad izdrukā “heksadecimālo vērtību: 38 B”, kā redzams šajā izvades fragmentā:

Hex vērtību drukāšana, izmantojot “%x” formāta norādītāju

Tiem, kas pārzina C programmēšanas valodu, funkcija “printf” īsi izdrukā heksadecimālās vērtības C++ valodā. Kamēr C++ piedāvā un “std::hex” pieeju, “printf” nodrošina īsu un tiešu veidu, kā sasniegt tādu pašu rezultātu.

#include
int galvenais ( ) {
int decimalValue = 1256. gads ;
printf ( 'Heksadecimālā vērtība ar printf ir: %x \n ' , decimalValue ) ;
atgriezties 0 ;
}


Šajā piemērā formāta norādītājs “%x” funkcijā “printf” norāda, ka atbilstošais arguments ir jādrukā heksadecimālā formā. Dotais kods ir ideāls piemērs heksadecimālās vērtības drukāšanai, izmantojot “printf” programmā C++. Sadalīsim to:

Virsraksti

: šajā galvenē ir ietverta funkcija “printf” un citas standarta ievades/izvades funkcijas. galvene ir iekļauta bibliotēku komplektā, kas tiek piegādāts kopā ar C++. Tas nodrošina funkcionalitāti no C valodas bibliotēkas, ļaujot C++ izmantot klasiskās ievades un izvades metodes, kas sākotnēji tika atrastas C valodā, izmantojot iekļaušanu.

Galvenā funkcija

'int decimalValue = 1256;' deklarē un piešķir decimālo vērtību 1256 veselam skaitļa mainīgajam ar nosaukumu “decimalValue”. “printf” laukā “printf(“Heksadecimālā vērtība ar printf ir: %x\n, decimalValue);” paziņojums izsauc funkciju “printf”, lai izdrukātu formatētu izvadi. “%x” ir “formāta norādītājs”, kas norāda, ka šāds arguments ir jādrukā kā heksadecimālais skaitlis ar mazajiem burtiem. Visbeidzot, “\n” pēc drukāšanas ievieto jaunas rindiņas rakstzīmi. Šis kods konsolei izvada “Heksadecimālā vērtība ar printf ir 4e8”, kā redzams šajā izvades fragmentā:

Hex vērtību drukāšana ar polsterējumu

Strādājot ar heksadecimālajām vērtībām, īpaši atmiņas adresēm, bieži vien ir vēlams konsekvents platums vai polsterējums. To var panākt, izmantojot “std::setw” manipulatoru, ko nodrošina galvene. Šeit ir piemērs, kā izdrukāt HEX vērtību ar polsterējumu. Šī programma parāda, kā drukāt heksadecimālo vērtību valodā C++ ar polsterējumu, izmantojot galvenes un manipulatora metodes.

#include
#include
int galvenais ( ) {
int decimalValue = 47 ;
std::cout << 'Heksadecimālā vērtība ar polsterējumu ir: << std::setw ( 8 ) << std::hex << decimalValue << std::endl;
atgriezties 0 ;
}


Šajā piemērā std::setw(8) nodrošina, ka heksadecimālā vērtība tiek drukāta ar vismaz 8 rakstzīmju platumu. Tas ir īpaši noderīgi, lai saskaņotu vērtības kolonnās vai ar atmiņas adresēm.

Izjauksim kodu un sapratīsim katru rindiņu pa vienam:

Virsraksti

: tā nodrošina pamata ievades/izvades funkcionalitāti, piemēram, straume “std::cout” drukāšanai.

: Tā piedāvā formatēšanas manipulatorus, piemēram, “std::setw”, ko izmanto, lai mainītu izvades izskatu.

Galvenā funkcija

'int decimalValue = 47;' deklarē un piešķir decimālo vērtību 47 veselam skaitļa mainīgajam ar nosaukumu “decimalValue”.

“std::cout << “Heksadecimālā vērtība ar pildījumu ir: ” << std::setw(8) << std::hex << decimalValue << std::endl;” paziņojumā tiek izdrukāts heksadecimālais skaitlis 47 ar polsterējumu setw(8). “std::setw(8)” izmanto manipulatoru “std::setw” ar argumentu 8, norādot minimālo izvades platumu 8 rakstzīmes.

“std::hex” izmanto “std::hex” manipulatoru, kas liek straumei interpretēt nākamo vērtību kā heksadecimālu, kā paskaidrots vienā no dotajiem piemēriem. Konsolē tiek izdrukāta šāda izvade:

Baitu datu hex vērtību drukāšana

Strādājot ar baitu datiem, parasti katrs baits tiek attēlots kā divciparu heksadecimālā vērtība. To var panākt, nodrošinot, ka platums ir iestatīts uz 2 un izmantojot “std::setfill('0')”, lai aizpildītu sākuma nulles. Tālāk ir sniegts piemērs, kas palīdz saprast, kā var izdrukāt baitu datu hex vērtību:

#include
#include
int galvenais ( ) {
neparakstīts char byteData = 0xAB;
std::cout << 'Baitu datu heksadecimālais attēlojums ir:
<< std::setw ( 2 ) << std::setfill ( '0' ) << std::hex << static_cast < starpt > ( baitu dati )
<< std::endl;
atgriezties 0 ;
}


Šeit “std::setw(2)” nodrošina, ka katrs baits ir attēlots ar minimālo platumu 2 rakstzīmes, un “std::setfill('0')” norāda, ka platuma aizpildīšanai jāizmanto sākuma nulles.

Šī iepriekš dotā programma demonstrē progresīvāku pieeju heksadecimālās vērtības drukāšanai C++ valodā ar īpašu formatējumu. Sadalīsim to, lai labāk izprastu:

Virsraksti

: tā nodrošina pamata ievades/izvades funkcionalitāti, piemēram, “std::cout” un “std::hex” drukāšanai.

: tas piedāvā formatēšanas manipulatorus, piemēram, “std::setw” un “std::setfill”, kas tiek izmantoti, lai mainītu izvades izskatu.

Galvenā funkcija

Galvenajā funkcijā neparakstīts “byteData = 0xAB;” char ir definēts, kas deklarē neparakstītu char mainīgo ar nosaukumu “byteData” un piešķir tam heksadecimālo vērtību “0xAB”. Paziņojums “std::cout << “Baitu datu heksadecimālais attēlojums ir: “:”, ziņojums tiek izvadīts konsolei, izmantojot izvades straumi.

'<< std::setw(2) << std::setfill('0') << std::hex << static_cast (byteData) << std::endl;' paziņojumu ķēde izmanto vairākus manipulatorus, lai formatētu izvadi.

std::setw(2): Tas iestata minimālo izvades platumu līdz 2 rakstzīmēm.

std::setfill('0'): Tas norāda, ka jebkurš polsterējums, kas nepieciešams, lai sasniegtu minimālo platumu, ir jāaizpilda ar rakstzīmi “0”.

std::hex: Tas liek straumei interpretēt nākamo vērtību kā heksadecimālu.

static_cast (byteData): Tā neparakstītos rakstzīmju datus pārsūta uz “int” pirms konvertēšanas uz heksadecimālu. Tas nav tehniski nepieciešams, taču to var izmantot, lai nodrošinātu konsekvenci ar dažām formatēšanas opcijām.

std::endl: Pēc drukāšanas tiek ievietota jaunrindas rakstzīme.

Šīs programmas izvade, kas tiek izdrukāta uz konsoles, ir parādīta šajā fragmentā:

Secinājums

Heksadecimālo vērtību drukāšana valodā C++ ietver pieejamo rīku izpratni un atbilstošās metodes izvēli, pamatojoties uz konkrētajām prasībām. Neatkarīgi no tā, vai izvēlaties “std::hex” manipulatoru, “printf” funkciju vai formatēšanas rīku kombināciju polsterēšanai un sākuma nullēm, jebkuram C++ programmētājam ir ļoti svarīgi labi pārzināt šīs metodes. Pārdomāti izmantojot šīs metodes, jūs varat nodrošināt, ka jūsu heksadecimālās vērtības tiek parādītas precīzi un vizuāli pievilcīgā formātā, kas veicina jūsu C++ koda vispārējo lasāmību un skaidrību.