Answer :
Solution :
#include [tex]${data-answer}lt;\text{stdio.h}>$[/tex]
#include [tex]${data-answer}lt;\text{string.h}>$[/tex]
#include [tex]${data-answer}lt;\text{stdlib.h}>$[/tex]
//Converts [tex]$\text{hex string}$[/tex] to binary string.
[tex]$\text{char}$[/tex] * hexadecimal[tex]$\text{To}$[/tex]Binary(char* hexdec)
{
long [tex]$\text{int i}$[/tex] = 0;
char *string = [tex]$(\text{char}^ *) \ \text{malloc}$[/tex](sizeof(char) * 9);
while (hexdec[i]) {
//Simply assign binary string for each hex char.
switch (hexdec[i]) {
[tex]$\text{case '0'}:$[/tex]
strcat(string, "0000");
break;
[tex]$\text{case '1'}:$[/tex]
strcat(string, "0001");
break;
[tex]$\text{case '2'}:$[/tex]
strcat(string, "0010");
break;
[tex]$\text{case '3'}:$[/tex]
strcat(string, "0011");
break;
[tex]$\text{case '4'}:$[/tex]
strcat(string, "0100");
break;
[tex]$\text{case '5'}:$[/tex]
strcat(string, "0101");
break;
[tex]$\text{case '6'}:$[/tex]
strcat(string, "0110");
break;
[tex]$\text{case '7'}:$[/tex]
strcat(string, "0111");
break;
[tex]$\text{case '8'}:$[/tex]
strcat(string, "1000");
break;
[tex]$\text{case '9'}:$[/tex]
strcat(string, "1001");
break;
case 'A':
case 'a':
strcat(string, "1010");
break;
case 'B':
case 'b':
strcat(string, "1011");
break;
case 'C':
case 'c':
strcat(string, "1100");
break;
case 'D':
case 'd':
strcat(string, "1101");
break;
case 'E':
case 'e':
strcat(string, "1110");
break;
case 'F':
case 'f':
strcat(string, "1111");
break;
default:
printf("\nInvalid hexadecimal digit %c",
hexdec[i]);
string="-1" ;
}
i++;
}
return string;
}
int main()
{ //Take 2 strings
char *str1 =hexadecimalToBinary("FA") ;
char *str2 =hexadecimalToBinary("12") ;
//Input 2 numbers p and n.
int p,n;
scanf("%d",&p);
scanf("%d",&n);
//keep j as length of str2
int j=strlen(str2),i;
//Now replace n digits after p of str1
for(i=0;i<n;i++){
str1[p+i]=str2[j-1-i];
}
//Now, i have used c library strtol
long ans = strtol(str1, NULL, 2);
//print result.
printf("%lx",ans);
return 0;
}