💡 Wy艣wietlenie liczby w zapisie szesnastkowym
C / C++


_czytelnik
Niezalogowany
u偶ytkownik
 Napisane ponad miesi膮c temu (18 maja 2020 o godz. 04:34:24) przez _czytelnik
W jaki spos贸b w j臋zyku C++ mog臋 wy艣wietli膰 liczb臋 w zapisie szesnastkowym (hex)?
B臋d臋 wdzi臋czny za przyk艂adowy kod.


Dave
13:02 26-05-2020
4 ×
Zobacz profil
 Napisane ponad miesi膮c temu (18 maja 2020 o godz. 06:54:02) przez Dave
W stylu j臋zyka C wy艣wietlenie w formacie heksadecymalnym (hex) mo偶na wykona膰 za pomoc膮 funkcji printf, kt贸ra jako pierwszy argument przyjmuje ci膮g formatuj膮cy, a kolejne argumenty to warto艣ci, kt贸re maj膮 by膰 wstawione do ci膮gu. Podaj膮c w ci膮gu znaki %d wy艣wietlimy liczb臋 w formacie dziesi臋tnym ze znakiem. Natomiast podaj膮c %x wy艣wietlimy liczb臋 szesnastkowo bez znaku. Znaki nowej linii w Windows to sekwencja \r\n.
Dla przyk艂adowej zmiennej typu ca艂kowitego ze znakiem:
int myInteger = 7854321;
Mog艂oby to wygl膮da膰 nast臋puj膮co:
/* C style */
printf("%d in hex = %x \r\n", myInteger, myInteger);
Na standardowym wyj艣ciu pojawi si臋:
7854321 in hex = 77d8f1

Je艣li chcemy mie膰 du偶e litery (np. 02E3FF zamiast 02e3ff) to u偶ywamy du偶ego X:
printf("%d in hex = %X \r\n", myInteger, myInteger);
Na standardowym wyj艣ciu pojawi si臋:
7854321 in hex = 77D8F1

Mo偶na te偶 okre艣li膰 jak膮 d艂ugo艣膰 ma mie膰 warto艣膰. Je艣li b臋dzie mniejsza to zostan膮 dopisane z przodu zera.
printf("%d in hex = %.16x \r\n", myInteger, myInteger);
Na standardowym wyj艣ciu pojawi si臋:
7854321 in hex = 000000000077d8f1

Natomiast w C++ mo偶na u偶y膰 np. std::hex, czyli:
/* C++ style */
std::cout << myInteger << " in hex = " << std::hex << myInteger << std::endl;
W powy偶szym kodzie std to przestrze艅 nazw, a cout to obiekt klasy ostream, kt贸ry reprezentuje standardowe wyj艣cie. Dalej za pomoc膮 przeci膮偶onych operator贸w wstawiania (<<)  do strumienia przesy艂ane s膮 poszczeg贸lne elementy. Funkcja std::hex ustawia wy艣wietlanie (std::cout << ...) i pobieranie (std::cin >> ...) warto艣ci w formacie szesnastkowym. Mo偶na te偶 u偶y膰 std::dec dla formatu dziesi臋tnego (decymalnego) oraz std::oct dla formatu 贸semkowego (oktalnego). Zapis std::endl powoduje przej艣cie do nowej linii.
Ten wpis jest warto艣ciowy dla 2 i wi臋cej u偶ytkownik贸w

Pozdrawiam, Dave.

© 2020 by haker.com.pl. Wszelkie prawa zastrze偶one.

Wszystkie tre艣ci umieszczone na tej witrynie s膮 chronione prawem autorskim. Surowo zabronione jest kopiowanie i rozpowszechnianie zawarto艣ci tej witryny bez zgody autora. Wszelkie opublikowane tutaj tre艣ci (w tym kody 藕r贸d艂owe i inne) s艂u偶膮 wy艂膮cznie celom informacyjnym oraz edukacyjnym. W艂a艣ciciele tej witryny nie ponosz膮 odpowiedzialno艣ci za ewentualne niezgodne z prawem wykorzystanie zasob贸w dost臋pnych w witrynie. U偶ytkownik tej witryny o艣wiadcza, 偶e z zamieszczonych tutaj danych korzysta na w艂asn膮 odpowiedzialno艣膰. Wszelkie znaki towarowe i nazwy zastrze偶one zosta艂y u偶yte jedynie w celach informacyjnych i nale偶膮 wy艂膮cznie do ich prawnych w艂a艣cicieli. Korzystaj膮c z zasob贸w witryny haker.com.pl o艣wiadczasz, 偶e akceptujesz powy偶sze warunki oraz polityk臋 prywatno艣ci.