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ą
#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
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
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
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ą
#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
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
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
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
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.