怎么用C语言实现将二进制字符串变换为16进制数?比如将“00010001”怎么转变为“0x11”?谢谢!

如题所述

将你要转化的数值例如00010001从右开始数,4位数一次,每4位转化成16进制的字符就可以了.
4为转16进制可以使用穷举法,0001=1,0010=2,.....1001=9,1010=A,....,1111=F
总共写16个就OK了!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-11-06
先转成10进制,,,,,,再转16进制,可以 用sprintf
~~~~~~
~~~~~~
~~~~~~~~~~~
第2个回答  2011-05-09
#include <stdio.h>
#include <math.h>
#include <string.h>

int main(void)
{
char szBuff[65] = {0};
int i, j = 0;
int len = 0;
int sum = 0;

printf("输入字符串:");
gets(szBuff);
printf("%s=0X", szBuff);
len = strlen(szBuff);
for (i = len-1; i >= 0; --i)
{
if (szBuff[i] == '1')
{
sum += ldexp(1, j);
}
else if (szBuff[i] != '1' && szBuff[i] != '0')
{
printf("输入错误!\n");
return 1;
}
++j;
j %= 4;
if (j == 0)
{
printf("%01x", sum);
sum = 0;
}
}
printf("\n");

return 0;
}本回答被提问者采纳
相似回答