C语言:怎么将十六进制字符串转换成二进制字符串,谁帮我写个函数
1个回答
展开全部
十六进制转成十进制的函数:
//返回16进制字符串s对应的整数值,遇到任何一个非法字符都返回-1。
int HexToDec(char *s)
{
char *p = s;
//空串返回0。
if(*p == '\0')
return 0;
//忽略开头的'0'字符
while(*p == '0')
p++;
int dec = 0;
char c;
//循环直到字符串结束。
while(c = *p++)
{
//dec乘16
dec <<= 4;
//数字字符。
if(c >= '0' && c <= '9')
{
dec += c - '0';
continue;
}
//小写abcdef。
if(c >= 'a' && c <= 'f')
{
dec += c - 'a' + 10;
continue;
}
//大写ABCDEF。
if(c >= 'A' && c <= 'F')
{
dec += c - 'A' + 10;
continue;
}
//没有从任何一个if语句中结束,说明遇到了非法字符。
return -1;
}
//正常结束循环,返回10进制整数值。
return dec;
}
十进制转成二进制的函数:
/*递归法求二进制数*/
#include<stdio.h>
void printb(int x,int n);
void main()
{
int x;
printf("input number:");
scanf("%d",&x);
printf("number of decimal form: %d\n",x);
printb(x,sizeof(int)*8);
putchar('\n');
}
void printb(int x,int n)
{
if(n>0)
{
putchar('0'+( (unsigned)(x & (1<<(n-1) ) )>>(n-1)));
printb(x,n-1);
}
}
//返回16进制字符串s对应的整数值,遇到任何一个非法字符都返回-1。
int HexToDec(char *s)
{
char *p = s;
//空串返回0。
if(*p == '\0')
return 0;
//忽略开头的'0'字符
while(*p == '0')
p++;
int dec = 0;
char c;
//循环直到字符串结束。
while(c = *p++)
{
//dec乘16
dec <<= 4;
//数字字符。
if(c >= '0' && c <= '9')
{
dec += c - '0';
continue;
}
//小写abcdef。
if(c >= 'a' && c <= 'f')
{
dec += c - 'a' + 10;
continue;
}
//大写ABCDEF。
if(c >= 'A' && c <= 'F')
{
dec += c - 'A' + 10;
continue;
}
//没有从任何一个if语句中结束,说明遇到了非法字符。
return -1;
}
//正常结束循环,返回10进制整数值。
return dec;
}
十进制转成二进制的函数:
/*递归法求二进制数*/
#include<stdio.h>
void printb(int x,int n);
void main()
{
int x;
printf("input number:");
scanf("%d",&x);
printf("number of decimal form: %d\n",x);
printb(x,sizeof(int)*8);
putchar('\n');
}
void printb(int x,int n)
{
if(n>0)
{
putchar('0'+( (unsigned)(x & (1<<(n-1) ) )>>(n-1)));
printb(x,n-1);
}
}
追问
我现在要得到二进制的字符串啊,不是输出来
追答
#include
void main()
{
char c[16];
int a[16][4]={0};
int i=0,j;
scanf("%s",c);---->>以字符串形式输入
while(c[i])--------->>>把字符串的每一位还原为数字
{
if(c[i]>'0'&&c[i]='A'&&c[i]='a'&&c[i]=0;j--)
{
a[i][j]=c[i]%2;
c[i]/=2;
}
for(j=0;j<4;j++)
printf("%d",a[i][j]);
i++;
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询