Tisk hexadecimálních hodnot v C++

Tisk Hexadecimalnich Hodnot V C



V programování v C++ je tisk hexadecimálních hodnot běžným požadavkem. Ať už pracujete s adresami paměti, provádíte bitové operace nebo se zabýváte hexadecimálními reprezentacemi dat, je nezbytné pochopit různé metody pro efektivní zobrazení hexadecimálních hodnot. Tento článek zkoumá různé metody a techniky tisku hexadecimálních hodnot v C++ a osvětluje jejich aplikace a případy použití.

Tisk hexadecimálních hodnot pomocí Std::hex

Jedním z přímých způsobů, jak vytisknout hexadecimální hodnoty v C++, je použití manipulátoru „std::hex“, který poskytuje hlavička . Tento manipulátor dává výstupnímu proudu pokyn, aby při tisku interpretoval celočíselné hodnoty jako hexadecimální. Představte si, že máte truhlu s pokladem plnou čísel. Ale místo obvyklé desítkové soustavy jsou všechny psány v tajném jazyce šestnáctkové soustavy. K dešifrování těchto kódů a odhalení jejich skutečných hodnot nabízí C++ užitečný nástroj nazvaný „std::hex“. Tento kouzelný trik v knihovně přemění váš výstupní proud na kruh dekodéru a okamžitě převede tato záhadná hexadecimální čísla na jejich známé desetinné protějšky.







#include
#include
int main ( ) {
int decimalValue = 907 ;
std::cout << 'Hexadecimální hodnota je:' << std::hex << decimalValue << std::endl;
vrátit se 0 ;
}


V tomto příkladu je manipulátor „std::hex“ aplikován na výstupní proud „std::cout“ před tiskem celého čísla „decimalValue“. Po vytištění hexadecimální hodnoty se proud vrátí ke svému normálnímu chování. Tento kód dokonale ukazuje, jak vytisknout hexadecimální hodnotu pomocí manipulátoru „std::hex“ v C++. Zde je rozpis kódu:



Záhlaví



: Používá se pro základní vstup/výstup, jako je tisk do konzole, a poskytuje manipulátor „std::hex“ pro formátování výstupu jako hexadecimální.





Hlavní funkce

Hodnota „int decimalValue = 907;“ deklaruje proměnnou „decimalValue“ typu „int“ a přiřadí jí desetinnou hodnotu 907.



'Std::cout << 'Šestnáctková hodnota je: ' << std::hex << decimalValue << std::endl;' vytiskne „Hexadecimální hodnotu:“ následovanou hexadecimální reprezentací „decimalValue“.

„std::hex“ dává výstupnímu streamu pokyn, aby následující hodnotu interpretoval jako hexadecimální. Proměnná „decimalValue“ obsahuje desetinnou hodnotu, která se má převést na hex. „Std::endl“ vloží po vytištění znak nového řádku. Nakonec tento kód nyní vytiskne „Hexadecimální hodnotu: 38B“, jak můžete vidět v následujícím úryvku výstupu:

Tisk hexadecimálních hodnot pomocí specifikátoru formátu „%x“.

Pro ty, kteří jsou obeznámeni s programovacím jazykem C, funkce „printf“ výstižně vypíše hexadecimální hodnoty v C++. Zatímco C++ nabízí přístup a „std::hex“, „printf“ poskytuje stručný a přímý způsob, jak dosáhnout stejného výsledku.

#include
int main ( ) {
int decimalValue = 1256 ;
printf ( 'Hexadecimální hodnota s printf je: %x \n ' , decimalValue ) ;
vrátit se 0 ;
}


V tomto příkladu specifikátor formátu „%x“ ve funkci „printf“ označuje, že odpovídající argument by měl být vytištěn v šestnáctkové soustavě. Daný kód je dokonalým příkladem tisku hexadecimální hodnoty pomocí „printf“ v C++. Pojďme si to rozebrat:

Záhlaví

: Toto záhlaví obsahuje funkci „printf“ a další standardní vstupní/výstupní funkce. Hlavička je součástí sady knihoven dodávaných s C++. Přináší funkce z knihovny jazyka C a umožňuje C++ využívat klasické vstupní a výstupní techniky, které se původně nacházejí v C prostřednictvím zahrnutí .

Hlavní funkce

Hodnota „int decimalValue = 1256;“ deklaruje a přiřadí desetinnou hodnotu 1256 celočíselné proměnné s názvem „decimalValue“. 'printf' v 'printf'('Hexadecimální hodnota s printf je: %x\n', decimalValue);' příkaz volá funkci „printf“, aby vytiskl formátovaný výstup. „%x“ je „specifikátor formátu“, který označuje, že následující argument by měl být vytištěn jako malé hexadecimální číslo. Nakonec „\n“ vloží po vytištění znak nového řádku. Tento kód odešle do konzole „Hodnota v šestnáctkové soustavě s printf je 4e8“, jak je vidět v následujícím úryvku výstupu:

Tisk hexadecimálních hodnot s výplní

Při práci s hexadecimálními hodnotami, zejména adresami paměti, je často žádoucí konzistentní šířka nebo výplň. Toho lze dosáhnout pomocí manipulátoru „std::setw“, který poskytuje hlavička . Zde je příklad, jak vytisknout HEX hodnotu s výplní. Tento program ukazuje, jak vytisknout hexadecimální hodnotu v C++ s odsazením pomocí hlavičky a metod manipulátoru.

#include
#include
int main ( ) {
int decimalValue = 47 ;
std::cout << 'Hexadecimální hodnota s výplní je: ' << std::setw ( 8 ) << std::hex << decimalValue << std::endl;
vrátit se 0 ;
}


V tomto příkladu std::setw(8) zajišťuje, že se hexadecimální hodnota vytiskne s minimální šířkou 8 znaků. To je užitečné zejména pro zarovnání hodnot ve sloupcích nebo s adresami paměti.

Pojďme zlomit kód a pochopit každý řádek jeden po druhém:

Záhlaví

: Poskytuje základní vstupní/výstupní funkce, jako je stream „std::cout“ pro tisk.

: Nabízí manipulátory formátování, jako je „std::setw“, které se používají k úpravě vzhledu výstupu.

Hlavní funkce

Hodnota „int decimalValue = 47;“ deklaruje a přiřadí desetinnou hodnotu 47 celočíselné proměnné s názvem „decimalValue“.

'Std::cout << 'Šestnáctková hodnota s výplní je: ' << std::setw(8) << std::hex << decimalValue << std::endl;' příkaz vypíše hexadecimální číslo 47 s výplní setw(8). „std::setw(8)“ použije manipulátor „std::setw“ s argumentem 8, určujícím minimální výstupní šířku 8 znaků.

„Std::hex“ aplikuje manipulátor „std::hex“, který říká proudu, aby interpretoval další hodnotu jako hexadecimální, jak je vysvětleno v jednom z uvedených příkladů. Na konzoli se vytiskne následující výstup:

Tisk hexadecimálních hodnot bytových dat

Při práci s bajtovými daty je běžné reprezentovat každý bajt jako dvoumístnou hexadecimální hodnotu. Toho lze dosáhnout zajištěním nastavení šířky na 2 a použitím „std::setfill(‘0’)“ k vyplnění úvodních nul. Následuje příklad, který vám pomůže pochopit, jak lze tisknout hexadecimální hodnoty bajtových dat:

#include
#include
int main ( ) {
unsigned char byteData = 0xAB;
std::cout << 'Hexadecimální reprezentace bajtových dat je: '
<< std::setw ( 2 ) << std::setfill ( '0' ) << std::hex << static_cast < int > ( byteData )
<< std::endl;
vrátit se 0 ;
}


Zde „std::setw(2)“ zajišťuje, že každý bajt je reprezentován minimální šířkou 2 znaků, a „std::setfill(‘0‘)“ určuje, že k vyplnění šířky by měly být použity úvodní nuly.

Tento dříve uvedený program demonstruje pokročilejší přístup k tisku hexadecimální hodnoty v C++ se specifickým formátováním. Pojďme si to rozebrat, abychom lépe porozuměli:

Záhlaví

: Poskytuje základní vstupní/výstupní funkce jako „std::cout“ a „std::hex“ pro tisk.

: Nabízí manipulátory s formátováním, jako jsou „std::setw“ a „std::setfill“, které se používají k úpravě vzhledu výstupu.

Hlavní funkce

V hlavní funkci je nepodepsaný „byteData = 0xAB;“ char je definována tak, že deklaruje proměnnou typu bez znaménka s názvem „byteData“ a přiřadí jí hexadecimální hodnotu „0xAB“. Příkaz „std::cout << „Hexadecimální reprezentace bajtových dat je: „:“ vyšle zprávu do konzole pomocí výstupního streamu.

The “<< std::setw(2) << std::setfill(‘0’) << std::hex << static_cast (byteData) << std::endl;” řetězec příkazů používá k formátování výstupu více manipulátorů.

std::setw(2): Nastaví minimální výstupní šířku na 2 znaky.

std::setfill(‘0’): Udává, že jakékoli odsazení potřebné k dosažení minimální šířky by mělo být vyplněno znakem „0“.

std::hex: Sděluje streamu, aby interpretoval další hodnotu jako šestnáctkovou.

static_cast (byteData): Před převodem na hexadecimální přetypuje data bez znaménka na „int“. To není technicky nutné, ale lze to použít pro konzistenci s některými možnostmi formátování.

std::endl: Po vytištění vloží znak nového řádku.

Výstup tohoto programu, který je vytištěn na konzole, je zobrazen v následujícím úryvku:

Závěr

Tisk hexadecimálních hodnot v C++ vyžaduje pochopení dostupných nástrojů a výběr vhodné metody na základě konkrétních požadavků. Ať už se rozhodnete pro manipulátor „std::hex“, funkci „printf“ nebo kombinaci formátovacích nástrojů pro výplň a úvodní nuly, důkladné pochopení těchto technik je pro každého programátora v C++ zásadní. Promyšleným použitím těchto metod můžete zajistit, aby se vaše hexadecimální hodnoty zobrazovaly přesně a ve vizuálně přitažlivém formátu, což přispívá k celkové čitelnosti a srozumitelnosti vašeho kódu C++.