Сопоставить каждую цифру от 0 до 15 с ее эквивалентом от 0 до f в гексе. Примените цикл while, взяв остаток числа при делении на 16, и добавьте его в строку и разделите его на 16 на каждом шаге. Последняя строка будет в обратном порядке, и я бы оставил ее в обратном порядке, если над ней нужно выполнить какие-либо операции. Если вы хотите распечатать его, напечатайте его в обратном порядке.
Чтобы преобразовать шестнадцатеричную строку обратно в int, выполните эту процедуру в обратном порядке.
char mapping[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
void convert(string& s, int n)
{
while (n)
{
int r = n % 16;
s += mapping[r];
n /= 16;
}
}
int main()
{
int n = 20;
string s;
convert(s, n);
cout << s << endl;
}