Para pasar de binario a decimal:
-Coges el binario y lo pasas a string
-Vas recorriendo el string con un indice i. Para cada posicion b(i) haces b(i)*2^i donde b(i) es 1 o 0. Lo vas metiendo en un acumulador y ya tienes el valor en decimal.
Lo mismo para hexadecimal pero entonces es h(i)*16^(i) donde h(i) es 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F (A=10.......F=15).
Espero haberme explicado bien