c语言16进制转二进制
⑴ 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);
}
}
⑶ 十六进制转换成二进制
将十六进制数转换为二进制数:
方法一:
将每一位的十六进制数转换为相应的4位二进制数,参照转换表直接转换如下:
方法二:
先把16进制每个数转为十进制,十六进制的1-9也对应十进制的1-9,十六进制的A-F对应十进制的10-15,再通过十进制转化为二进制(将十进制数连续除2,直至得0余x,并将每次的余数从右至左记下),最后将所得的四位二进制数顺序排列。
举例:
对于十六进制数字F6:
采用方法一:
F=1111,6=0110
所得即为11110110
采用方法二:
f=15 除2得 7余1
7 除2得 3余1
3除2得1余1
1除2得0余1
将余数从下往上(从1的余数1到15的余数1)排列,所以f=1111
同理6=0110
得f6=11110110
⑷ 用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进制的代码 要有注释不然看不懂 谢谢 救命
/*
十六进制的一个位 对应 二进制的四个位
二进制 十六进制
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 a
1011 b
1100 c
1101 d
1110 e
1111 f
比如十六进制的 7af = 0111 1010 1111
*/
#include <cstdio>
#include <string>
#include <iostream>
using namespace std;
typedef struct hex
{
string er_hex;
string sl_hex;
} Hex;
Hex flag[16] = {//十六进制与二进制 对应 初始化
{"0000","0"},{"0001","1"},{"0010","2"},{"0011","3"},
{"0100","4"},{"0101","5"},{"0110","6"},{"0111","7"},
{"1000","8"},{"1001","9"},{"1010","a"},{"1011","b"},
{"1100","c"},{"1101","d"},{"1110","e"},{"1111","f"}};
int main()
{
/*for (int i = 0; i < 16; i++)
{
cout << flag[i].er_hex << " " << flag[i].sl_hex << endl;
}*/
string str;
cout << "请输入一个十六进制数" << endl;
cin >> str;
cout << "十六进制数 " << str << "二进制为:";
for (int j = 0; j < str.length(); j++)
{
for (int i = 0; i < 16; i++)
{ //检查输入的十六进制的每一位 并翻译成相应的二进制
if(str[j] == flag[i].sl_hex[0])
cout << flag[i].er_hex << " ";
}
}
cout << endl;
return 0;
}
//PS:输入的数一定要符合十六进制数要求 不然会出错
⑹ C语言中,16进制如何转换成2进制
十六进制换成二进制,就是一位换成四位就可以啦!0x3c,0x表示十六进制,3就换成0011,c就是十进制的十二,换成二进制为1011。合起来就是啦00111011,也可以把前面2个0去了,一般不去 .....
⑺ C语言中,十六进制转二进制
//将16进制的数保存到一个数组中,并将它一个个输出
#include <iostream>
using namespace std;
int main()
{
int n = 0x3C;
int a[8];
int i;
for (i = 0; i != 8; ++i)
{
a[8 - 1 - i] = n % 2;
n /= 2;
}
for (i = 0; i != 8; ++i)
{
cout << a[i];
}
cout << endl;
return 0;
}
⑻ 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语言 十六进制转换为二进制 用函数做
我不会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‘,依次类推
⑽ 十六进制如何转换成二进制
与十六进制数BC等值的二进制数是10111100,应该选择B项。
将十六进制数转换为二进制数,只需将每一位的十六进制数转换为相应的4位二进制数,然后组合起来即可。
二进制与十六进制之间的转换:
1、二进制数转换成十六进制数
由于2的4次方=16,所以依照二进制与八进制的转换方法,将二进制数的每四位用一个十六进制数码来表示,整数部分以小数点为界点从右往左每四位一组转换,小数部分从小数点开始自左向右每四位一组进行转换。
2、十六进制转换成二进制数
如将十六进制数转换成二进制数,只要将每一位十六进制数用四位相应的二进制数表示,即可完成转换。