1.
Typowe podejście do konwersji między systemem decymalnym a innymi systemami liczbowymi. Zapamiętujemy resztę z dzielenia liczby dziesiętnej przez liczbę podstawę docelowego systemu (w tym przypadku 16) (iDec%16) , następnie dzielimy liczbę całkowicie przez podstawę docelowego systemu liczbowego (iDec /= 16). Powtarzamy tę czynność dopóki liczba dziesiętna nie stanie się zerem (while (iDec)).
Typowe podejście do konwersji między systemem decymalnym a innymi systemami liczbowymi. Zapamiętujemy resztę z dzielenia liczby dziesiętnej przez liczbę podstawę docelowego systemu (w tym przypadku 16) (iDec%16) , następnie dzielimy liczbę całkowicie przez podstawę docelowego systemu liczbowego (iDec /= 16). Powtarzamy tę czynność dopóki liczba dziesiętna nie stanie się zerem (while (iDec)).
#include <iostream> using namespace std; int main() { int iDec; string sHex; string sTmp = "0123456789ABCDEF"; cin >> iDec; while (iDec){ sHex = sTmp[iDec%16] + sHex; iDec /= 16; } cout << sHex; return 0; }
Kolejne otrzymywane reszty powinny wchodzić na początek generowanej liczby stąd zapis:
sHex = sTmp[iDec%16] + sHex;
Dzięki zmiennej pomocniczej sTmp dostajemy odpowiednią "cyfrę" bez dodatkowej analizy otrzymanej reszty.
2.
Wykorzystując stringstream
#include <iostream> #include <sstream> using namespace std; int main() { int iDec; cin >> iDec; string sHex; stringstream sTmp; sTmp.clear(); hex(sTmp); uppercase(sTmp); sTmp << iDec; sTmp >> sHex; cout << sHex; return 0; }