Šešioliktainių verčių spausdinimas C++

Sesioliktainiu Verciu Spausdinimas C



C++ programuojant šešioliktainių reikšmių spausdinimas yra įprastas reikalavimas. Nepriklausomai nuo to, ar dirbate su atminties adresais, atliekate Bitwise operacijas, ar dirbate su šešioliktainiu duomenų pateikimu, labai svarbu suprasti įvairius metodus, kad būtų galima efektyviai rodyti šešioliktaines reikšmes. Šiame straipsnyje nagrinėjami įvairūs šešioliktainių reikšmių C++ spausdinimo metodai ir būdai, nušviečiant jų programas ir naudojimo atvejus.

Šešioliktainių verčių spausdinimas naudojant Std::hex

Vienas paprastas būdas spausdinti šešioliktaines reikšmes C++ yra naudoti „std::hex“ manipuliatorių, pateiktą antraštėje. Šis manipuliatorius nurodo išvesties srautui spausdinant interpretuoti sveikųjų skaičių reikšmes kaip šešioliktaines. Įsivaizduokite, kad turite lobių skrynią, pilną skaičių. Tačiau vietoj įprastos dešimtainės sistemos jie visi parašyti slapta šešioliktaine kalba. Norėdami iššifruoti šiuos kodus ir atskleisti tikrąsias jų reikšmes, C++ siūlo naudingą įrankį, vadinamą „std::hex“. Šis stebuklingas triukas bibliotekoje paverčia jūsų išvesties srautą dekoderio žiedu, akimirksniu paverčiant tuos paslaptingus šešioliktainius skaičius į pažįstamus dešimtainius skaičius.







#include
#include
tarp pagrindinis ( ) {
int decimalValue = 907 ;
std::cout << Šešioliktainė reikšmė yra: << std::hex << decimalValue << std::endl;
grąžinti 0 ;
}


Šiame pavyzdyje manipuliatorius „std::hex“ taikomas „std::cout“ išvesties srautui prieš spausdinant „decimalValue“ sveikąjį skaičių. Išspausdinus šešioliktainę vertę, srautas grąžinamas į įprastą veikimą. Šis kodas puikiai parodo, kaip spausdinti šešioliktainę reikšmę naudojant „std::hex“ manipuliatorių C++. Štai kodo suskirstymas:



Antraštės



: Jis naudojamas pagrindinei įvesties / išvesties, pvz., spausdinimo į konsolę, funkcijai ir suteikia manipuliatorių „std::hex“, kad išvestį būtų galima suformatuoti kaip šešioliktainį.





Pagrindinė funkcija

„Int decimalValue = 907;“ deklaruoja „int“ tipo kintamąjį „decimalValue“ ir priskiria jam dešimtainę reikšmę 907.



'std::cout << 'Šešioliktainė reikšmė yra: ' << std::hex << decimalValue << std::endl;' atspausdina „Hexadecimal value:“ ir šešioliktainį „decimalValue“ atvaizdą.

„std::hex“ nurodo išvesties srautą interpretuoti šią reikšmę kaip šešioliktainę. Kintamajame „decimalValue“ yra dešimtainė reikšmė, kurią reikia konvertuoti į šešioliktainę. „std::endl“ po spausdinimo įterpia naujos eilutės simbolį. Galiausiai šis kodas dabar išspausdina „šešioliktainę reikšmę: 38B“, kaip matote šiame išvesties fragmente:

Šešioliktainių reikšmių spausdinimas naudojant „%x“ formato specifikatorių

Tiems, kurie yra susipažinę su C programavimo kalba, funkcija „printf“ glaustai atspausdina šešioliktaines reikšmes C++. Nors C++ siūlo ir „std::hex“ metodą, „printf“ yra glaustas ir tiesioginis būdas pasiekti tą patį rezultatą.

#include
tarp pagrindinis ( ) {
int decimalValue = 1256 m ;
printf ( Šešioliktainė reikšmė su printf yra: %x \n , decimalValue ) ;
grąžinti 0 ;
}


Šiame pavyzdyje „%x“ formato specifikacija „printf“ funkcijoje rodo, kad atitinkamas argumentas turi būti spausdinamas šešioliktaine skaitmenimis. Pateiktas kodas yra puikus šešioliktainės reikšmės spausdinimo pavyzdys naudojant „printf“ C++. Išskaidykime:

Antraštės

: šioje antraštėje yra funkcija „printf“ ir kitos standartinės įvesties / išvesties funkcijos. Antraštė yra įtraukta į bibliotekų rinkinį, pateikiamą su C++. Tai suteikia funkcionalumą iš C kalbos bibliotekos, leidžiančią C++ naudoti klasikinius įvesties ir išvesties metodus, kurie iš pradžių buvo rasti C per įtraukimą.

Pagrindinė funkcija

„Int decimalValue = 1256;“ deklaruoja ir priskiria dešimtainę reikšmę 1256 sveikajam kintamajam pavadinimu „decimalValue“. „printf“ lauke „printf(“Šeioliktainė reikšmė su printf yra: %x\n, decimalValue);“ pareiškimas iškviečia funkciją „printf“, kad išspausdintų suformatuotą išvestį. „%x“ yra „formato specifikatorius“, kuris rodo, kad šis argumentas turėtų būti spausdinamas mažosiomis šešioliktainėmis raidėmis. Galiausiai „\n“ po spausdinimo įterpia naujos eilutės simbolį. Šis kodas į konsolę išveda „Šeioliktainė reikšmė su printf yra 4e8“, kaip parodyta šiame išvesties fragmente:

Šešioliktainių verčių spausdinimas su užpildu

Kai kalbama apie šešioliktaines reikšmes, ypač atminties adresus, dažnai pageidautinas nuoseklus plotis arba užpildymas. Tai galima pasiekti naudojant „std::setw“ manipuliatorių, pateiktą antraštėje. Štai pavyzdys, kaip spausdinti HEX reikšmę su užpildu. Ši programa parodo, kaip spausdinti šešioliktainę reikšmę C++ kalboje su užpildymu naudojant antraštę ir manipuliatoriaus metodus.

#include
#include
tarp pagrindinis ( ) {
int decimalValue = 47 ;
std::cout << Šešioliktainė reikšmė su užpildu yra: << std::setw ( 8 ) << std::hex << decimalValue << std::endl;
grąžinti 0 ;
}


Šiame pavyzdyje std::setw(8) užtikrina, kad šešioliktainė reikšmė būtų spausdinama mažiausiai 8 simboliais. Tai ypač naudinga derinant reikšmes stulpeliuose arba su atminties adresais.

Sulaužykime kodą ir supraskime kiekvieną eilutę po vieną:

Antraštės

: ji suteikia pagrindines įvesties / išvesties funkcijas, pvz., „std::cout“ srautas spausdinimui.

: jie siūlomi formatavimo manipuliatoriai, pvz., „std::setw“, naudojami išvesties išvaizdai keisti.

Pagrindinė funkcija

„Int decimalValue = 47;“ deklaruoja ir priskiria dešimtainę reikšmę 47 sveikajam kintamajam pavadinimu „decimalValue“.

'std::cout << 'Šešioliktainė reikšmė su užpildu yra: ' << std::setw(8) << std::hex << decimalValue << std::endl;' pareiškimas atspausdina šešioliktainį skaičių 47 su setw(8) užpildu. „std::setw(8)“ taiko „std::setw“ manipuliatorių su 8 argumentu, nurodant minimalų 8 simbolių išvesties plotį.

„std::hex“ taiko „std::hex“ manipuliatorių, kuris nurodo srautui interpretuoti kitą reikšmę kaip šešioliktainę, kaip paaiškinta viename iš pateiktų pavyzdžių. Į konsolę išspausdinama ši išvestis:

Baitų duomenų šešioliktainių reikšmių spausdinimas

Dirbant su baitų duomenimis, įprasta kiekvieną baitą pateikti kaip dviejų skaitmenų šešioliktainę reikšmę. Tai galima pasiekti užtikrinant, kad plotis būtų nustatytas į 2 ir naudojant „std::setfill('0')“, kad užpildytumėte pirmuosius nulius. Toliau pateikiamas pavyzdys, padedantis suprasti, kaip galima spausdinti šešioliktaines baitų duomenų reikšmes:

#include
#include
tarp pagrindinis ( ) {
nepasirašytas simbolis byteData = 0xAB;
std::cout << 'Šeioliktainis baitų duomenų pateikimas yra:
<< std::setw ( 2 ) << std::setfill ( '0' ) << std::hex << statinis_perdavimas < tarpt > ( byteData )
<< std::endl;
grąžinti 0 ;
}


Čia „std::setw(2)“ užtikrina, kad kiekvienas baitas būtų pavaizduotas mažiausiai 2 simbolių pločiu, o „std::setfill('0“)“ nurodo, kad norint užpildyti plotį reikia naudoti priešakinius nulius.

Ši anksčiau pateikta programa demonstruoja pažangesnį požiūrį į šešioliktainės reikšmės spausdinimą C++ su specifiniu formatavimu. Išskaidykime, kad geriau suprastume:

Antraštės

: teikia pagrindines įvesties / išvesties funkcijas, pvz., „std::cout“ ir „std::hex“, skirtą spausdinti.

: siūlo formatavimo manipuliatorius, pvz., „std::setw“ ir „std::setfill“, kurie naudojami išvesties išvaizdai keisti.

Pagrindinė funkcija

Pagrindinėje funkcijoje nepasirašytas „byteData = 0xAB;“ Apibrėžiamas char, kuris deklaruoja nepasirašytą char kintamąjį, pavadintą „byteData“, ir jam priskiria šešioliktainę reikšmę „0xAB“. Teiginys „std::cout <<“ Šešioliktainis baitų duomenų pateikimas yra: „:“ išveda pranešimą į konsolę naudodamas išvesties srautą.

„<< std::setw(2) << std::setfill(‘0’) << std::hex << static_cast (byteData) << std::endl;“ pareiškimų grandinė taiko kelis manipuliatorius, kad formatuotų išvestį.

std::setw(2): Jis nustato minimalų išvesties plotį iki 2 simbolių.

std::setfill('0'): Nurodoma, kad bet koks užpildymas, kurio reikia norint pasiekti minimalų plotį, turi būti užpildytas simboliu „0“.

std::hex: Jis nurodo srautui interpretuoti kitą reikšmę kaip šešioliktainę.

static_cast (byteData): Jis perduoda nepasirašytus simbolio duomenis į „int“, prieš konvertuodamas į šešioliktainį. Tai nėra techniškai būtina, bet gali būti naudojama siekiant suderinti kai kurias formatavimo parinktis.

std::endl: Atspausdinus įterpia naujos eilutės simbolį.

Šios programos išvestis, atspausdinta konsolėje, rodoma šiame fragmente:

Išvada

Spausdinant šešioliktaines reikšmes C++ kalba reikia suprasti turimus įrankius ir pasirinkti tinkamą metodą pagal konkrečius reikalavimus. Nesvarbu, ar pasirinksite „std::hex“ manipuliatorių, „printf“ funkciją ar formatavimo įrankių derinį, skirtą užpildyti ir įvesti nulius, bet kuriam C++ programuotojui labai svarbu gerai suprasti šiuos metodus. Taikydami šiuos metodus apgalvotai, galite užtikrinti, kad šešioliktainės reikšmės būtų rodomos tiksliai ir vizualiai patraukliu formatu, o tai prisideda prie bendro C++ kodo skaitomumo ir aiškumo.