c语言十六进制转换二进制
Ⅰ 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语言怎么把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语言,如何将十六数转换为二进制数组,再将二进制数组逆序后,输出新的十六进制数;
有一个迟猜非常简单的算法,直接映射:
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
Ⅳ 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语言编程将十六进制转换为二进制
十进制转二进制:-----------------------------------------------
#include
#include
void
main()
{
int
d,n,i,j,a[50],outformat=1;
printf("输入一个数:");
scanf("%d",&n);
if(n==0)
printf("\n十进制
0
转换二进制数:0");
else
{
printf("\n十进制
%d
转换二进制数:1",n);
for(i=1;n!=1;++i)
{
d=n%2;
a[i]=d;
n=n/2;
}
for(j=i-1;j>0;--j)
{
if
(outformat%4==0)
printf("
");//取模的目的是为了每4个一组
++outformat;
printf("%d",a[j]);
}
}getch();
}
十进制转十六进制:-----------------------------------------------
#include
void
main()
{
int
u10;
char
u16[10];
int
w=0,a,b,i;
printf("请输入一个数字-->");
scanf("%d",&u10);
if(u10==0)
{
u16[0]='0';
w++;
}
else
{
a=u10;
while(a)
{
b=a%16;
if(b<10)
{
u16[w]='0'+b;
}
else
{
u16[w]='a'+b-10;
}
a=a/16;
w++;
}
}
printf("\n");
printf("%d(10)转换为16进制数字为:",u10);
for(i=w-1;i>=0;i--)
{
printf("%c",u16[i]);
}
printf("\n");
}
Ⅵ C语言中,16进制如何转换成2进制
十六进制换成二进制,就是一位换成四位就可以啦!0x3c,0x表示十六进制,3就换成0011,c就是十进制的十二,换成二进制为1011。合起来就是啦00111011,也可以把前面2个0去了,一般不去 .....