Отпечатване на шестнадесетични стойности в C++

Otpecatvane Na Sestnadeseticni Stojnosti V C



В програмирането на C++ отпечатването на шестнадесетични стойности е често срещано изискване. Независимо дали работите с адреси на паметта, извършвате побитови операции или работите с шестнадесетични представяния на данни, важно е да разберете различните методи за ефективно показване на шестнадесетичните стойности. Тази статия изследва различните методи и техники за отпечатване на шестнадесетични стойности в C++, като хвърля светлина върху техните приложения и случаи на употреба.

Отпечатване на шестнадесетичните стойности с помощта на Std::hex

Един прост начин за отпечатване на шестнадесетичните стойности в C++ е използването на манипулатора „std::hex“, предоставен от заглавката . Този манипулатор инструктира изходящия поток да интерпретира целочислените стойности като шестнадесетични при отпечатване. Представете си, че имате сандък със съкровища, пълен с числа. Но вместо обичайната десетична система, всички те са написани на тайния шестнадесетичен език. За да дешифрира тези кодове и да разкрие истинските им стойности, C++ предлага полезен инструмент, наречен „std::hex“. Този магически трик в библиотеката трансформира вашия изходен поток в декодерен пръстен, незабавно превеждайки тези мистериозни шестнадесетични числа в познатите им десетични двойници.







#include
#include
int main ( ) {
int decimalValue = 907 ;
std::cout << 'Шестнадесетичната стойност е: ' << std::hex << десетична стойност << std::endl;
връщане 0 ;
}


В този пример манипулаторът „std::hex“ се прилага към изходния поток „std::cout“, преди да се отпечата цялото число „decimalValue“. След отпечатване на шестнадесетичната стойност, потокът се връща към нормалното си поведение. Този код идеално демонстрира как да отпечатате шестнадесетична стойност с помощта на манипулатора 'std::hex' в C++. Ето разбивка на кода:



Заглавки



: Използва се за основен вход/изход като отпечатване към конзолата и предоставя манипулатора „std::hex“ за форматиране на изхода като шестнадесетичен.





Главна функция

„int decimalValue = 907;“ декларира променливата „decimalValue“ от тип „int“ и й присвоява десетичната стойност 907.



„std::cout << „Шестнадесетичната стойност е: ” << std::hex << decimalValue << std::endl;” отпечатва „Шестнадесетичната стойност:“, последвана от шестнадесетичното представяне на „decimalValue“.

„std::hex“ инструктира изходящия поток да интерпретира следната стойност като шестнадесетична. Променливата “decimalValue” съдържа десетичната стойност, която трябва да бъде преобразувана в шестнадесетична. „std::endl“ вмъква знак за нов ред след отпечатване. И накрая, този код сега отпечатва „Шестнадесетична стойност: 38B“, както можете да видите в следния изходен фрагмент:

Отпечатване на шестнадесетичните стойности с помощта на спецификатора на формат „%x“.

За тези, които са запознати с езика за програмиране C, функцията 'printf' отпечатва кратко шестнадесетичните стойности в C++. Докато C++ предлага подхода и “std::hex”, “printf” предоставя кратък и директен начин за постигане на същия резултат.

#include
int main ( ) {
int decimalValue = 1256 ;
printf ( „Шестнадесетичната стойност с printf е: %x ' , десетична стойност ) ;
връщане 0 ;
}


В този пример спецификаторът на формат „%x“ във функцията „printf“ показва, че съответният аргумент трябва да бъде отпечатан в шестнадесетичен формат. Даденият код е идеален пример за отпечатване на шестнадесетична стойност с помощта на “printf” в C++. Нека го разбием:

Заглавки

: Този хедър включва функцията „printf“ и другите стандартни функции за вход/изход. Заглавката е включена в пакета от библиотеки, които идват с C++. Той въвежда функционалността от библиотеката на езика C, позволявайки на C++ да използва класическите техники за въвеждане и извеждане, които първоначално се намират в C чрез включването на .

Главна функция

„int decimalValue = 1256;“ декларира и присвоява десетичната стойност от 1256 на целочислена променлива с име „decimalValue“. „printf“ в „printf(„Шестнадесетичната стойност с printf е: %x\n“, decimalValue);“ извиква функцията “printf” за отпечатване на форматирания изход. „%x“ е „спецификатор на формат“, който показва, че следващият аргумент трябва да бъде отпечатан като шестнадесетично число с малки букви. И накрая, “\n” вмъква знак за нов ред след отпечатване. Този код извежда „Шестнадесетичната стойност с printf е 4e8“ към конзолата, както се вижда в следния изходен фрагмент:

Отпечатване на шестнадесетичните стойности с подложка

Когато се работи с шестнадесетични стойности, особено адреси на паметта, често е желателно да има постоянна ширина или подложка. Това може да се постигне с помощта на манипулатора “std::setw”, предоставен от заглавката . Ето пример за това как да отпечатате HEX стойност с подложка. Тази програма демонстрира как да отпечатате шестнадесетична стойност в C++ с подложка, като използвате методите на заглавката и манипулатора.

#include
#include
int main ( ) {
int decimalValue = 47 ;
std::cout << 'Шестнадесетичната стойност с подплата е: ' << std::setw ( 8 ) << std::hex << десетична стойност << std::endl;
връщане 0 ;
}


В този пример std::setw(8) гарантира, че шестнадесетичната стойност се отпечатва с минимална ширина от 8 знака. Това е особено полезно за подравняване на стойностите в колони или с адреси на паметта.

Нека разбием кода и разберем всеки ред един по един:

Заглавки

: Осигурява основната входно/изходна функционалност като „std::cout“ поток за печат.

: Той предлага манипулатори за форматиране, като „std::setw“, които се използват за промяна на външния вид на изхода.

Главна функция

„int decimalValue = 47;“ декларира и присвоява десетичната стойност 47 на целочислена променлива, наречена „decimalValue“.

„std::cout << „Шестнадесетичната стойност с подложка е: ” << std::setw(8) << std::hex << decimalValue << std::endl;” операторът отпечатва шестнадесетичното число 47 с подложката setw(8). „std::setw(8)“ прилага манипулатора „std::setw“ с аргумент от 8, посочвайки минимална изходна ширина от 8 знака.

„std::hex“ прилага манипулатора „std::hex“, който казва на потока да интерпретира следващата стойност като шестнадесетична, както е обяснено в един от дадените примери. Следният изход се отпечатва на конзолата:

Отпечатване на шестнадесетичните стойности на байтови данни

Когато работите с байтови данни, обичайно е всеки байт да се представя като двуцифрена шестнадесетична стойност. Това може да се постигне, като се уверите, че ширината е зададена на 2 и използвате „std::setfill(‘0’)“, за да запълните водещите нули. Следва пример, за да ви помогне да разберете как може да се направи отпечатването на шестнадесетичните стойности на байтови данни:

#include
#include
int main ( ) {
неподписан char byteData = 0xAB;
std::cout << 'Шестнадесетичното представяне на байтови данни е: '
<< std::setw ( 2 ) << std::setfill ( '0' ) << std::hex << static_cast < вътр > ( byteData )
<< std::endl;
връщане 0 ;
}


Тук „std::setw(2)“ гарантира, че всеки байт е представен с минимална ширина от 2 знака, а „std::setfill(‘0’)“ указва, че трябва да се използват водещи нули за запълване на ширината.

Тази по-рано дадена програма демонстрира по-усъвършенстван подход за отпечатване на шестнадесетична стойност в C++ със специфично форматиране. Нека го разбием, за да разберем по-добре:

Заглавки

: Осигурява основна входно/изходна функционалност като „std::cout“ и „std::hex“ за печат.

: Предлага манипулатори за форматиране като „std::setw“ и „std::setfill“, които се използват за промяна на изходния вид.

Главна функция

В основната функция неподписан „byteData = 0xAB;“ char е дефиниран, който декларира неподписана char променлива с име 'byteData' и присвоява шестнадесетичната стойност на '0xAB' към нея. Операторът „std::cout << „Шестнадесетичното представяне на байтови данни е: „:“ извежда съобщението към конзолата с помощта на изходния поток.

„<< std::setw(2) << std::setfill(‘0’) << std::hex << static_cast (byteData) << std::endl;” веригата на изрази прилага множество манипулатори за форматиране на изхода.

std::setw(2): Задава минималната изходна ширина на 2 знака.

std::setfill(‘0’): Указва, че всяка подложка, необходима за достигане на минималната ширина, трябва да бъде запълнена със знака „0“.

std::hex: Казва на потока да интерпретира следващата стойност като шестнадесетична.

static_cast (byteData): Преобразува неподписаните char данни към „int“ преди преобразуване в шестнадесетичен. Това не е технически необходимо, но може да се използва за съгласуваност с някои опции за форматиране.

std::endl: Вмъква знак за нов ред след отпечатване.

Резултатът от тази програма, който се отпечатва на конзолата, е показан в следния фрагмент:

Заключение

Отпечатването на шестнадесетични стойности в C++ включва разбиране на наличните инструменти и избор на подходящия метод въз основа на специфичните изисквания. Независимо дали избирате манипулатора „std::hex“, функцията „printf“ или комбинация от инструменти за форматиране за подпълване и водещи нули, стабилното разбиране на тези техники е от съществено значение за всеки C++ програмист. Като прилагате внимателно тези методи, можете да гарантирате, че вашите шестнадесетични стойности се показват точно и във визуално привлекателен формат, който допринася за цялостната четливост и яснота на вашия C++ код.