C语言:怎么将十六进制字符串转换成二进制字符串,谁帮我写个函数
发布网友
发布时间:2022-05-02 07:15
我来回答
共1个回答
热心网友
时间:2023-10-10 23:58
十六进制转成十进制的函数:
//返回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
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);
}
}