Штампање хексадецималних вредности у Ц++

Stampane Heksadecimalnih Vrednosti U C



У Ц++ програмирању, штампање хексадецималних вредности је уобичајен захтев. Било да радите са меморијским адресама, обављате битне операције или се бавите хексадецималним приказима података, неопходно је разумети различите методе за ефикасно приказивање хексадецималних вредности. Овај чланак истражује различите методе и технике за штампање хексадецималних вредности у Ц++, бацајући светло на њихове примене и случајеве употребе.

Штампање хексадецималних вредности помоћу Стд::хек

Један једноставан начин за штампање хексадецималних вредности у Ц++ је коришћење манипулатора „стд::хек“ који обезбеђује заглавље <иостреам>. Овај манипулатор налаже излазном току да интерпретира целобројне вредности као хексадецималне приликом штампања. Замислите да имате ковчег с благом пун бројева. Али уместо уобичајеног децималног система, сви су написани на тајном језику хексадецимала. Да би дешифровао ове кодове и открио њихове праве вредности, Ц++ нуди корисну алатку под називом „стд::хек“. Овај магични трик у библиотеци <иостреам> трансформише ваш излазни ток у декодерски прстен, тренутно преводећи те мистериозне хексадецималне бројеве у њихове познате децималне парњаке.







#инцлуде <иостреам>
#инцлуде <иоманип>
инт маин ( ) {
инт децималВалуе = 907 ;
стд::цоут << „Хексадецимална вредност је: „ << стд::хек << децималВалуе << стд::ендл;
повратак 0 ;
}


У овом примеру, манипулатор „стд::хек“ се примењује на „стд::цоут“ излазни ток пре штампања целог броја „децималВалуе“. Након штампања хексадецималне вредности, ток се враћа у нормално понашање. Овај код савршено показује како да одштампате хексадецималну вредност користећи манипулатор „стд::хек“ у Ц++. Ево поделе кода:



Заглавља



<иостреам>: Користи се за основни унос/излаз као што је штампање на конзоли и обезбеђује манипулатор „стд::хек“ за форматирање излаза као хексадецимални.





Основна функција

„инт децималВалуе = 907;“ декларише променљиву „децималВалуе“ типа „инт“ и додељује јој децималну вредност 907.



„стд::цоут << „Хексадецимална вредност је: ” << стд::хек << децималВалуе << стд::ендл;” штампа „Хексадецималну вредност:“ праћену хексадецималном репрезентацијом „децималнеВалуе“.

„стд::хек“ налаже излазном току да тумачи следећу вредност као хексадецималну. Променљива „децималВалуе“ садржи децималну вредност која се претвара у хексадецимални. „стд::ендл“ умеће знак новог реда након штампања. Коначно, овај код сада штампа „хексадецималну вредност: 38Б“ као што можете видети у следећем излазном исечку:

Штампање хексадецималних вредности помоћу „%к“ спецификације формата

За оне који су упознати са програмским језиком Ц, функција „принтф“ концизно исписује хексадецималне вредности у Ц++. Док Ц++ нуди приступ <иостреам> и “стд::хек”, “принтф” пружа концизан и директан начин да се постигне исти резултат.

#инцлуде <цстдио>
инт маин ( ) {
инт децималВалуе = 1256 ;
принтф ( „Хексадецимална вредност са принтф је: %к ' , децималВалуе ) ;
повратак 0 ;
}


У овом примеру, спецификација формата „%к“ унутар функције „принтф“ означава да одговарајући аргумент треба да буде одштампан у хексадецималном облику. Дати код је савршен пример штампања хексадецималне вредности коришћењем „принтф“ у Ц++. Хајде да га разложимо:

Заглавља

<цстдио>: Ово заглавље укључује „принтф“ функцију и друге стандардне функције за унос/излаз. Заглавље <цстдио> је укључено у пакет библиотека које долазе са Ц++. Он доноси функционалност из библиотеке <стдио.х> језика Ц, омогућавајући Ц++-у да користи класичне технике уноса и излаза које су првобитно пронађене у Ц-у кроз укључивање <цстдио>.

Основна функција

„инт децималВалуе = 1256;“ декларише и додељује децималну вредност од 1256 целобројној променљивој под називом „децималнаВалуе“. „принтф“ у „принтф(„Хексадецимална вредност са принтф је: %к\н“, децималВалуе);“ изјава позива функцију “принтф” за штампање форматираног излаза. „%к“ је „спецификатор формата“ који указује да следећи аргумент треба да буде одштампан као мали хексадецимални број. На крају, „\н“ умеће знак новог реда након штампања. Овај код шаље „Хексадецимална вредност са принтф-ом је 4е8” на конзолу као што се види у следећем излазном исечку:

Штампање хексадецималних вредности са паддингом

Када се ради о хексадецималним вредностима, посебно меморијским адресама, често је пожељна конзистентна ширина или допуна. Ово се може постићи коришћењем манипулатора „стд::сетв” који се налази у заглављу <иоманип>. Ево примера како да одштампате ХЕКС вредност са допуном. Овај програм показује како да одштампате хексадецималну вредност у Ц++ са допуном користећи заглавље <иоманип> и методе манипулатора.

#инцлуде <иостреам>
#инцлуде <иоманип>
инт маин ( ) {
инт децималВалуе = 47 ;
стд::цоут << 'Хексадецимална вредност са допуном је: ' << стд::сетв ( 8 ) << стд::хек << децималВалуе << стд::ендл;
повратак 0 ;
}


У овом примеру, стд::сетв(8) обезбеђује да се хексадецимална вредност штампа са минималном ширином од 8 знакова. Ово је посебно корисно за поравнавање вредности у колонама или са меморијским адресама.

Хајде да разбијемо код и разумемо сваки ред један по један:

Заглавља

<иостреам>: Пружа основну улазно/излазну функцију као што је „стд::цоут“ ток за штампање.

<иоманип>: Нуди манипулаторе за форматирање попут „стд::сетв“ који се користе за измену изгледа излаза.

Основна функција

„инт децималВалуе = 47;“ декларише и додељује децималну вредност од 47 целобројној променљивој под називом „децималнаВалуе“.

„стд::цоут << „Хексадецимална вредност са допуном је: ” << стд::сетв(8) << стд::хек << децималВалуе << стд::ендл;” израз штампа хексадецимални број 47 са сетв(8) допуном. „стд::сетв(8)“ примењује манипулатор „стд::сетв“ са аргументом од 8, наводећи минималну излазну ширину од 8 знакова.

„стд::хек“ примењује манипулатор „стд::хек“ који говори току да тумачи следећу вредност као хексадецималну као што је објашњено у једном од датих примера. Следећи излаз се штампа на конзоли:

Штампање хексадецималних вредности бајт података

Када радите са бајт подацима, уобичајено је да се сваки бајт представља као двоцифрена хексадецимална вредност. Ово се може постићи тако што се обезбеди да је ширина постављена на 2 и коришћењем „стд::сетфилл(‘0’)“ за попуњавање водећих нула. Следи пример који ће вам помоћи да разумете како се штампа хексадецималне вредности бајт података:

#инцлуде <иостреам>
#инцлуде <иоманип>
инт маин ( ) {
унсигнед цхар битеДата = 0кАБ;
стд::цоут << „Хексадецимални приказ бајт података је: „
<< стд::сетв ( 2 ) << стд::сетфилл ( '0' ) << стд::хек << статиц_цаст < инт > ( битеДата )
<< стд::ендл;
повратак 0 ;
}


Овде „стд::сетв(2)“ обезбеђује да сваки бајт буде представљен са минималном ширином од 2 знака, а „стд::сетфилл(‘0’)“ одређује да се водеће нуле користе за попуњавање ширине.

Овај претходно дати програм демонстрира напреднији приступ штампању хексадецималне вредности у Ц++ са специфичним форматирањем. Хајде да то разложимо да бисмо боље разумели:

Заглавља

<иостреам>: Пружа основну улазно/излазну функцију попут „стд::цоут“ и „стд::хек“ за штампање.

<иоманип>: Нуди манипулаторе за форматирање као што су „стд::сетв“ и “стд::сетфилл“ који се користе за модификовање изгледа излаза.

Основна функција

У главној функцији, непотписани „битеДата = 0кАБ;“ цхар је дефинисан који декларише непотписану цхар променљиву под називом „битеДата“ и додељује јој хексадецималну вредност „0кАБ“. „стд::цоут << „Хексадецимални приказ бајт података је: „:“ изјава шаље поруку на конзолу користећи излазни ток.

„<< стд::сетв(2) << стд::сетфилл(‘0’) << стд::хек << статиц_цаст<инт>(битеДата) << стд::ендл;” ланац изјава примењује вишеструке манипулаторе за форматирање излаза.

стд::сетв(2): Поставља минималну излазну ширину на 2 знака.

стд::сетфилл(‘0’): Означава да сваки пад који је потребан да би се достигла минимална ширина треба да буде попуњен знаком „0“.

стд::хек: Каже стриму да тумачи следећу вредност као хексадецималну.

статиц_цаст<инт>(битеДата): Пребацује непотписане цхар податке у „инт“ пре конверзије у хексадецимални. Ово није технички неопходно, али се може користити за доследност са неким опцијама форматирања.

стд::ендл: Умеће знак новог реда након штампања.

Излаз овог програма који се штампа на конзоли приказан је у следећем исечку:

Закључак

Штампање хексадецималних вредности у Ц++ подразумева разумевање доступних алата и избор одговарајуће методе на основу специфичних захтева. Било да се одлучите за манипулатор „стд::хек“, функцију „принтф“ или комбинацију алата за форматирање за попуњавање и почетне нуле, добро познавање ових техника је од суштинског значаја за сваког Ц++ програмера. Пажљивом применом ових метода можете осигурати да се ваше хексадецималне вредности приказују тачно и у визуелно привлачном формату који доприноси општој читљивости и јасноћи вашег Ц++ кода.