当前位置:首页 » 编程语言 » 16进制转2进制c语言

16进制转2进制c语言

发布时间: 2023-06-11 11:23:35

c语言如何把一个十六进制数转换为二进制数组输出

楼下的程序应该是将16进制转化为10进制数组,将其改进一下即可,也就是加上将十进制转换为二进制的程序段:全程序如下:
#include <stdio.h>
void main(
{
int i;
int m = 0;
char c[10];
char *r;
scanf("%s",c);
if(c[0]!='0'&&c[1]!='x'&&c[1]!='X')/*判断是不是十六进制数*/
{
printf("不是十六进制数\n");
}
else
{{
i = 2;
while (c[i]!='\0')
{
m = m*16+c[i]-'0';/*将十六进制数转换为十进制数*/
i++;
}
if(m=0)
printf("%d\n",0);
else
for(i=0;m!=0;i++)/*将十进制数转换为二进制数*/
{
*(r+i)=m%2;
m=m/2;
}
for(;i-->=0;)
printf("%d",*(r+i));/*输出二进制数*/
printf("\n");
}
}关于十六进制直接转换为二进制数,直接做很简单,但是用程序实现起来不容易,所以先转换为十进制,再转为二进制,虽有点笨,也算是一种方法吧呵呵,我好久没用c了,可能程序中有些错误,但是进制转换算法本身是没有问题的,也许可以参考一下,希望对楼主有所帮助,早日解决问题

❷ c语言怎么把16进制转化为二进制

//将16进制的数保存到一个数组中,并将它一个个输出
#include<stdio.h>
#defineN16
intmain()
{
intn;
inta[N];
inti;
printf("Inputa16进制数:");
scanf("%x",&n);
for(i=0;i!=N;++i)
{
a[N-1-i]=n%2;
n/=2;
}
for(i=0;i!=N;++i)
{
printf("%d",a[i]);
if((i+1)%4==0)
printf("");
}
printf(" ");
return0;
}

示例运行结果:

Input a 16进制数: abcd

1010 1011 1100 1101

❸ C语言:怎么将十六进制字符串转换成二进制字符串,谁帮我写个函数

十六进制转成十进制的函数:
//返回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);
}
}

❹ C语言中,16进制如何转换成2进制

十六进制换成二进制,就是一位换成四位就可以啦!0x3c,0x表示十六进制,3就换成0011,c就是十进制的十二,换成二进制为1011。合起来就是啦00111011,也可以把前面2个0去了,一般不去 .....

❺ c语言 十六进制转换为二进制 用函数做

我不会C语言,只会delphi
我给你一段delphi语言的代码吧,我刚写的
procere TForm1.Button1Click(Sender: TObject);
var s,s1:string;

m,i:integer;
begin

s:=edit1.text;

m:=length(s);//16进制字符串的长度

S1:='';

for i:=1 to m do

begin

case s[i] of //对于16进制的每一位,进行下面的操作

'0': S1:='0000'+S1;

'1': S1:='0001'+S1;

'2': S1:='0010'+S1;

'3': S1:='0011'+S1;

'4': S1:='0100'+S1;

'5': S1:='0101'+S1;

'6': S1:='0110'+S1;

'7': S1:='0111'+S1;

'8': S1:='1000'+S1;

'9': S1:='1001'+S1;

'A': S1:='1010'+S1;

'B': S1:='1011'+S1;

'C': S1:='1100'+S1;

'D': S1:='1101'+S1;

'E': S1:='1110'+S1;

'F': S1:='1111'+S1;

end;

end;

edit2.Text:=s1;
end;

我说一下我的思路,你可以修改一下,照这个思路做:
先定义一个 字符串变量 S1 ,用来存2进制字符串,并作为中间变量
十六进制的1位 表示 2进制的 4位
所以 对于16进制的每一位,看这个位是几,如果是0 那就对S1加上‘0000’,如果是1 那就加上’0001‘,依次类推

❻ c语言,如何将十六数转换为二进制数组,再将二进制数组逆序后,输出新的十六进制数;

有一个迟猜非常简单的算法,直接映射:
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
A 1010
B 1011
C 1100
D 1101
E 1110
F 1111
每位十六进制闭局数用四位二进制表示 。
例如:轿旦让
(1DE)16 =(1 1101 1110)2

热点内容
安卓手机如何无密码解锁vivo 发布:2025-02-13 15:52:10 浏览:884
电信50m上传 发布:2025-02-13 15:47:56 浏览:363
清理outlook2010缓存 发布:2025-02-13 15:43:30 浏览:54
ohem算法 发布:2025-02-13 15:40:10 浏览:930
java编程课程 发布:2025-02-13 15:36:08 浏览:475
cs编译 发布:2025-02-13 15:36:07 浏览:55
高级语言都要编译解析型语言 发布:2025-02-13 15:06:32 浏览:304
openwrt源码下载 发布:2025-02-13 15:01:59 浏览:644
linux删除一个目录 发布:2025-02-13 15:00:29 浏览:539
蚂蚁存储 发布:2025-02-13 15:00:25 浏览:918