Passer d'hexadécimal à decimal en C

bonsoir, j’ai un exercice qui me demande de passer d’hexadécimal en decimal, je ne comprend pas trop comment m’y prendre alors je suis allé sur internet et je suis tombé sur ça
je me demande qu’est ce que c’est que;
N=(int)strlen(V);
V2[i]=(int)V[i]-48;
Nombre=Nombre+V2[i]*pow(16,j++);
ou encore som = som + (hexa[i]-55)*pow(16,j);

voici le code;

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>

int main (void)
{
unsigned int N;
int i;

int Nombre=0; //nombre en décimal
//int i=0;

char V[100];
int V2[100];
printf(" Introduisez un nombre entier positif Hexadecimal : ");
scanf("%s",&V);	

N=(int)strlen(V);


for(i=N-1;i>=0;i--)
{
	if((V[i] == 'A') || (V[i] == 'a'))
		V2[i]=10;
	else if ((V[i] =='B') || (V[i] == 'b'))
		V2[i] = 11;
	else if ((V[i] =='C') || (V[i] == 'c'))
		V2[i] = 12;
	else if ((V[i] =='D') || (V[i] == 'd'))
		V2[i] = 13;
	else if ((V[i] =='E') || (V[i] == 'e'))
		V2[i] = 14;
	else if ((V[i] =='F') || (V[i] == 'f'))
		V2[i] = 15;
	else
	 V2[i]=(int)V[i]-48;
}


printf("\n la longeur :  %d \n",N);

int j=0;
for(i=N-1;i>=0;i--)
{
	printf( "  %d ",V2[i]);	
	
	Nombre=Nombre+V2[i]*pow(16,j++);
}

printf("\n Le Nombre en Decimal est :  %d \n",Nombre);


		
return 0;		

}