I C++ programmering er udskrivning af hexadecimale værdier et almindeligt krav. Uanset om du arbejder med hukommelsesadresser, udfører Bitwise-operationer eller beskæftiger sig med hexadecimale repræsentationer af data, er det vigtigt at forstå de forskellige metoder til effektivt at vise hex-værdierne. Denne artikel udforsker de forskellige metoder og teknikker til at udskrive de hexadecimale værdier i C++, og kaster lys over deres applikationer og anvendelsestilfælde.
Udskrivning af hex-værdier ved hjælp af Std::hex
En ligetil måde at udskrive de hexadecimale værdier i C++ er at bruge 'std::hex'-manipulatoren, der leveres af
#include
#inkluder
int main ( ) {
int decimalVærdi = 907 ;
std::cout << 'Den hexadecimale værdi er: ' << std::hex << decimalværdi << std::endl;
Vend tilbage 0 ;
}
I dette eksempel anvendes 'std::hex'-manipulatoren på 'std::cout'-outputstrømmen før udskrivning af 'decimalValue'-heltallet. Efter udskrivning af hex-værdien vendes strømmen tilbage til sin normale adfærd. Denne kode demonstrerer perfekt, hvordan man udskriver en hexadecimal værdi ved hjælp af 'std::hex' manipulatoren i C++. Her er en opdeling af koden:
Overskrifter
Hovedfunktion
'int decimalVærdi = 907;' erklærer variablen 'decimalValue' af typen 'int' og tildeler den decimalværdien 907.
'std::cout << 'Den hexadecimale værdi er: ' << std::hex << decimalValue << std::endl;' udskriver 'Hexadecimal value:' efterfulgt af den hexadecimale repræsentation af 'decimalValue'.
'std::hex' instruerer outputstrømmen til at fortolke følgende værdi som hexadecimal. Variablen 'decimalValue' indeholder den decimalværdi, der skal konverteres til hex. 'std::endl' indsætter et linjeskifttegn efter udskrivning. Endelig udskriver denne kode nu 'Hexadecimal value: 38B', som du kan se i følgende outputkodestykke:
Udskrivning af hex-værdier ved hjælp af '%x'-formatspecifikationen
For dem, der er fortrolige med C-programmeringssproget, udskriver 'printf'-funktionen kort de hexadecimale værdier i C++. Mens C++ tilbyder
int main ( ) {
int decimalVærdi = 1256 ;
printf ( 'Den hexadecimale værdi med printf er: %x \n ' , decimalværdi ) ;
Vend tilbage 0 ;
}
I dette eksempel angiver '%x'-formatspecifikationen i 'printf'-funktionen, at det tilsvarende argument skal udskrives i hexadecimal. Den givne kode er et perfekt eksempel på udskrivning af en hexadecimal værdi ved hjælp af 'printf' i C++. Lad os opdele det:
Overskrifter
Hovedfunktion
'int decimalValue = 1256;' erklærer og tildeler decimalværdien 1256 til en heltalsvariabel ved navn 'decimalValue'. 'printf' i 'printf('Den hexadecimale værdi med printf er: %x\n', decimalValue);' sætning kalder 'printf'-funktionen for at udskrive det formaterede output. '%x' er 'formatspecifikationen', som angiver, at følgende argument skal udskrives som et lille hexadecimalt tal. Til sidst indsætter '\n' et linjeskifttegn efter udskrivning. Denne kode udsender 'Den hexadecimale værdi med printf er 4e8' til konsollen som det ses i følgende udskriftsstykke:
Udskrivning af hex-værdier med polstring
Når man har at gøre med hexadecimale værdier, især hukommelsesadresser, er en ensartet bredde eller udfyldning ofte ønskelig. Dette kan opnås ved at bruge 'std::setw' manipulatoren leveret af
#inkluder
int main ( ) {
int decimalVærdi = 47 ;
std::cout << 'Den hexadecimale værdi med udfyldning er: ' << std::setw ( 8 ) << std::hex << decimalværdi << std::endl;
Vend tilbage 0 ;
}
I dette eksempel sikrer std::setw(8), at den hexadecimale værdi udskrives med en minimumsbredde på 8 tegn. Dette er især nyttigt til at justere værdierne i kolonner eller med hukommelsesadresser.
Lad os bryde koden og forstå hver linje en efter en:
Overskrifter
Hovedfunktion
'int decimalValue = 47;' erklærer og tildeler decimalværdien 47 til en heltalsvariabel ved navn 'decimalValue'.
'std::cout << 'Den hexadecimale værdi med polstring er: ' << std::setw(8) << std::hex << decimalValue << std::endl;' sætning udskriver det hexadecimale tal på 47 med setw(8)-udfyldningen. 'std::setw(8)' anvender 'std::setw'-manipulatoren med et argument på 8, med en minimumsoutputbredde på 8 tegn.
'std::hex' anvender 'std::hex' manipulatoren, som fortæller strømmen at fortolke den næste værdi som hexadecimal som forklaret i et af de givne eksempler. Følgende output udskrives til konsollen:
Udskrivning af hex-værdier for bytedata
Når du arbejder med bytedata, er det almindeligt at repræsentere hver byte som en tocifret hexadecimal værdi. Dette kan opnås ved at sikre, at bredden er sat til 2 og bruge 'std::setfill('0')' til at udfylde de foranstillede nuller. Det følgende er et eksempel for at hjælpe dig med at forstå, hvordan udskrivning af hex-værdier for bytedata kan udføres:
#include#inkluder
int main ( ) {
usigneret char byteData = 0xAB;
std::cout << 'Den hexadecimale repræsentation af bytedata er: '
<< std::setw ( 2 ) << std::setfill ( '0' ) << std::hex << static_cast < int > ( byteData )
<< std::endl;
Vend tilbage 0 ;
}
Her sikrer 'std::setw(2)', at hver byte er repræsenteret med en minimumsbredde på 2 tegn, og 'std::setfill('0')' angiver, at indledende nuller skal bruges til at udfylde bredden.
Dette tidligere givne program demonstrerer en mere avanceret tilgang til udskrivning af en hexadecimal værdi i C++ med specifik formatering. Lad os dele det ned for at få en bedre forståelse:
Overskrifter
Hovedfunktion
I hovedfunktionen er en usigneret 'byteData = 0xAB;' char er defineret, som erklærer en usigneret char-variabel ved navn 'byteData' og tildeler den hexadecimale værdi af '0xAB'. 'std::cout << 'Den hexadecimale repræsentation af bytedata er: ':' udsender meddelelsen til konsollen ved hjælp af outputstrømmen.
'<< std::setw(2) << std::setfill('0') << std::hex << static_cast
std::setw(2): Det indstiller den mindste outputbredde til 2 tegn.
std::setfill('0'): Det specificerer, at enhver udfyldning, der er nødvendig for at nå minimumsbredden, skal udfyldes med tegnet '0'.
std::hex: Det fortæller strømmen at fortolke den næste værdi som hexadecimal.
static_cast
std::endl: Det indsætter et linjeskifttegn efter udskrivning.
Outputtet af dette program, der er udskrevet på konsollen, vises i følgende uddrag:
Konklusion
Udskrivning af hexadecimale værdier i C++ involverer at forstå de tilgængelige værktøjer og vælge den passende metode baseret på de specifikke krav. Uanset om du vælger 'std::hex'-manipulatoren, 'printf'-funktionen eller en kombination af formateringsværktøjer til udfyldning og indledende nuller, er det afgørende for enhver C++-programmør at have et solidt greb om disse teknikker. Ved at anvende disse metoder med omtanke kan du sikre, at dine hexadecimale værdier vises nøjagtigt og i et visuelt tiltalende format, som bidrager til den overordnede læsbarhed og klarhed af din C++-kode.