Zamiana liczby szesnastkowej na dziesiętną - algorytmicznie

#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
    
string liczba;
int x=0;
int p = 1, wynik = 0;
cout << "Podaj liczbe szesnastkową: ";
cin >> liczba;
cout << "Liczba " << liczba << " w systemie dziesietnym wynosi ";
for (int i = liczba.size()-1; i >= 0; i--) // zaczynamy od konca stringa i poruszamy sie do przodu - do indeksu 0
{
    
    if (liczba[i] >= '0' && liczba[i] << '9') // jezeli cyfra
         x = liczba[i]-'0'; // to odejmujemy kod zera - zamieniamy kod cyfry na cyfre
    else // jezeli litera - musi byc duza
         x = liczba[i] - 55; // to odejmujemy 55 np. A(65) - 55 = 10
    wynik += x*p; // do wyniku dodajemy otrzymana wartosc pomnozana przez podstawe systemu do odpowiedniej potegi
    p = p*16; // ustawiamy p na odpowiednia potege systemu
}
cout << wynik << endl;
return 0;
    
}