请大家帮帮忙,小弟我在主程序里面要调用的一个16进制转换2进制的程序,可是小弟我不懂得如何将这个转换后的2进制返回到小弟我的主程序里面

请大家帮帮忙,我在主程序里面要调用的一个16进制转换2进制的程序,可是我不懂得怎么将这个转换后的2进制返回到我的主程序里面
请各位帮一下忙,这是我在主程序里面要调用的一个16进制转换2进制的程序,其中change[10]是我要输入的16进制数,number是这个16进制数的长度。我不懂得怎么将这个转换后的2进制返回到我的主程序里面,就比如说我输入一个"A",但是我需要的时“1010”,我应该在下面这个程序中改些什么,还有在主程序调用的时候该怎么写啊?谢谢大家啦!
int sixten_two(char change[10],int number)
{
 int i,j;
 int result=0;
 int b[50];
 int p[30];
 for(i=0;i<number;i++)
 {
  if(change[i]<='9'&&change[i]>='0')
   b[i]=change[i]-'0';
  else
  {
   switch(change[i])
   {
   case 'A': b[i]=10;
      break;
   case 'B': b[i]=11;
      break;
   case 'C': b[i]=12;
      break;
   case 'D': b[i]=13;
      break;
   case 'E': b[i]=14;
      break;
   case 'F': b[i]=15;
      break;
   case 'a': b[i]=10;
      break;
   case 'b': b[i]=11;
      break;
   case 'c': b[i]=12;
      break;
   case 'd': b[i]=13;
      break;
   case 'e': b[i]=14;
      break;
   case 'f': b[i]=15;
      break;
   }
  }
 }
 for(j=number-1,i=1;j>=0;j--,i*=16)
 {
  result+=b[j]*i;
 }
  for(j=0;result!=0;j++)
 {
  p[j]=result%2;
  result=result/2; 
 }
  for(i=j-1;i>=0;i--)
  {
   printf("%d",p[number]);
   return(p[i]);
  }
}

------解决思路----------------------
个人觉得..if(change[i]<='9'&&change[i]>='0')
   b[i]=change[i]-'0';
  else if(change[i]<='F'&&change[i]>='A')
  b[i]=change[i]-55;这样就可以了

如果  for(i=j-1;i>=0;i--)
  {
   printf("%d",p[number]);
   return(p[i]);
  }
在这个循环里面有一个return 则,for只执行一次,如果想要返回数组,p数组只是个局部数组,这个是行不通滴~~你可以搜一下  数组返回 ,希望对你有用请大家帮帮忙,小弟我在主程序里面要调用的一个16进制转换2进制的程序,可是小弟我不懂得如何将这个转换后的2进制返回到小弟我的主程序里面
------解决思路----------------------
没必要用那么多的case语句,方法用二楼的就行。至于C/C++的函数是不能返回一个数组的,只能返回一个数组的指针,你可以在主程序定义一个数组binary,然后传进这个数组来存储计算得来的二进制数,如:int sixten_two(char change[10],int number, char* binary);这样你把二进制数存到binary这个数组就好了。还有一个,记住计算得来的二进制数是倒序的。。。。
PS:初学的时候就养成良好命名各种变量名和函数名,如代表长度就用length,用number还以为是数字的意思。。。可以看一下google编程规范~
------解决思路----------------------
在你的程序中进行的改写……其中你可以利用函数的返回值也可以把要赋值的东西传进去赋值……只是这个数组不知道要定义多大,大了浪费空间,小了肯定放不下……仅供参考!!!
#include <stdio.h>

char arrayLage[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
char arrayLittle[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};

int chartohex(char num)
{
for (int i =0; i< 16; i++)
{
if (arrayLage[i] == num 
------解决思路----------------------
 arrayLittle[i] == num)
return i;
}
return -1;
}

int sixten_two(char change[10],int number, int outarry[], int arryindex)
{
int i,j;
int result=0;
  int b[50];
static int p[30];
for(i=0;i<number;i++)
{
int returnvalue = chartohex(change[i]);
if (returnvalue != -1)
{
b[i] = returnvalue;
}
else
{
printf("传入的十六进制数有误");
return -1;
}
}

for(j=number-1,i=1;j>=0;j--,i*=16)
{
result +=b[j]*i;
}

for(j=0;result!=0;j++)
{
outarry[j]=result%2;
result=result/2; 
}
return --j; //记得减1 
/*
for(i=j-1;i>=0;i--)
{
printf("%d\t",outarry[i]);

}
*/
}

int main(void)
{
int array[30]= {0}; //定义你在程序要调用的数组,也就是你所谓的返回值 
 
int numbit = sixten_two("a",1, array, 30);//没有排除返回值为-1的情况 
for (int i = numbit; i >= 0; i--)
printf("%d\t", array[i]);

return 0;
}