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

c语言二进制转16进制

发布时间: 2022-02-21 20:07:03

c语言2进制转16进制

2进制还是16进制就是一个表示形式,存在内存中的变量是不用转的,就是显示出来给人看不一样。你可以这样转
16进制显示:printf("Variable
a=%x",a);
2进制显示:
char
*
int2bin(const
int
in,char
*out)
{
int
i,r;
char
t[32],*tp;
r=in;
tp=t;
while(r>=1)
{
*tp++=r%2+48;
r/=2;
}
*tp--='\0';
while(*out++=*tp--);
*out='\0';
return
out;
}
如果你是已经有了2进制的字符串,转换成一个数,可以参照以上程序很容易就编出来了

⑵ C语言二进制如何转换成十六进制

#include<stdio.h>
#include<math.h>
voidmain()
{


inta=98765;//需要转换的数字

intyiwei=0xF;//用以移位的数字
intnumbers=0;//记录移位多次
inttmp=0,index=0;
charbuffer[11]={'0'};//

buffer[1]='x';//buffer[2]='0';
buffer[10]='';//给最后一个补充
do//移位到最后高位都是1,因此最后会是一个负数
{
tmp=a&yiwei;//取出四位当做十六进制的一位

tmp>>=numbers*4;//要还原取出来的这个数字,如果不是在低位取得就需要这样操作

if(tmp>=10&&tmp<16)
buffer[10-1-index]=tmp-10+'a';//因为从最低位取的,因此赋值从数组最后面开始赋
elseif(tmp<10&&tmp>=0)
buffer[10-1-index]='0'+tmp;

if(yiwei<<4<0)//这里判断是不是已经到了最高位了,如果是最高位,最高的前三位是数字,最后一位是符号
yiwei=yiwei<<3;
else
yiwei<<=4;//把这个数字向后移四位,用以取下一个四位

index++;
numbers++;
}while(yiwei>0);

printf("%s ",buffer);
}

⑶ c语言二进制八进制十进制16进制怎么转换

二进制转换成八进制数
(1)二进制数转换成八进制数:对于整数,从低位到高位将二进制数的每三位分为一组,若不够三位时,在高位左面添0,补足三位,然后将每三位二进制数用一位八进制数替换,小数部分从小数点开始,自左向右每三位一组进行转换即可完成。例如:
将二进制数1101001转换成八进制数,则
(001 101 001)2
| | |
( 1 5 1)8
( 1101001)2=(151)8

(2)八进制数转换成二进制数:只要将每位八进制数用三位二进制数替换,即可完成转换,例如,把八进制数(643.503)8,转换成二进制数,则
(6 4 3 . 5 0 3)8
| | | | | |
(110 100 011 . 101 000 011)2
(643.503)8=(110100011.101000011)2
4、二进制与十六进制之间的转换
(1)二进制数转换成十六进制数:由于2的4次方=16,所以依照二进制与八进制的转换方法,将二进制数的每四位用一个十六进制数码来表示,整数部分以小数点为界点从右往左每四位一组转换,小数部分从小数点开始自左向右每四位一组进行转换。
(2)十六进制转换成二进制数
如将十六进制数转换成二进制数,只要将每一位十六进制数用四位相应的二进制数表示,即可完成转换。
例如:将(163.5B)16转换成二进制数,则
( 1 6 3 . 5 B )16
| | | | |
(0001 0110 0011. 0101 1011 )2
(163.5B)16=(101100011.01011011)2

⑷ 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语言程序转换成2进制或者16进制代码

二进或16十进制代码是看不懂的,象乱码。
你想说的是如何看C程序的目标程序的汇编代码。
多数C语言编译器可以直接产生汇编代码的,类型名是.ASM
如果你用的命令行编译的,可以让你带开关项的。
我用C++BUILDER6可以生成汇编代码给你看一看。

⑹ 单片机c语言中,怎么快速把二进制数转成十六进制数

直接用查表对应的方式可以实现快速转换。
1、一位数十六进制与二进制对应表
十六进制 二进制
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
2、转换方法:二进制以小数点为分隔,往前往后每四位划为一组,不足四位补0,按上表用对应的十六进制数字代入即可。

⑺ C语言,将存放在数组里的二进制数转换成十六进制

Zbuf如果不是字符串是不会存成0x开头的16进制的,但是可以输出成01开头的16进制
而Buf数组是可以用按权展开的方式变成10进制的。
如果能够看明白我上面的两句话,我可以帮你写一个Buf数组到10进制的转换函数

⑻ C语言将二进制数N转换成16进制的程序

这段代码你试试,由于取值范围的限制,只能实现8位二进制的转换
你可以试试扩大取值范围,加以相应变化
个人能力有限,抛砖引玉,希望能给你点启发。。。
#include<math.h>
#include <stdio.h>
void main()
{int a,b=1,c,d,e;
int i,j=0,num[8],s[8];
char zh[8];
int shuju(int x);
scanf("%d",&a);

/*实现二进制的分解输入,把二进制的每一位数值导入到数组当中*/
if(-1<a&&a<11111112)
{for(i=0;i<8;i++)
{b=10*b;
c=b/10;
d=a/c;
num[i]=d%10;
if(num[i]>1)
{printf("输入错误,不符合二进制\n");
e=1;
break;}}}
else{printf("输入错误,超出范围\n");
e=1;}

/*对数组中的值进行重组,每4位编成一个四位数与子函数实现对比调用*/
if(e!=1)
{for(i=0;i<8;i=i+4,j++)
{s[j]=num[i]+num[i+1]*10+num[i+2]*100+num[i+3]*1000;
zh[j]=shuju(s[j]);
}
for(;j-1>=0;j--)
{if(zh[j-1]<10) printf("%d",zh[j-1]);
else printf("%c",zh[j-1]);}
printf("\n");
};
}

/*对比调用*/
int shuju(int x)
{char y;
switch(x)
{case 0: y=0;break;
case 1: y=1;break;
case 10: y=2;break;
case 11: y=3;break;
case 100: y=4;break;
case 101: y=5;break;
case 110: y=6;break;
case 111: y=7;break;
case 1000: y=8;break;
case 1001: y=9;break;
case 1010: y='A';break;
case 1011: y='B';break;
case 1100: y='C';break;
case 1101: y='D';break;
case 1110: y='E';break;
case 1111: y='F';break;
}
return(y);}

⑼ 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语言--二进制转十六进制

看看这个行不行?希望对你有帮助……
#include "stdafx.h"
#include "stdio.h"//
#include "string.h"//
#include "conio.h"//
#include "stdlib.h"//
void convert(char *input, char *output){
int i=0,j,nx,lein,ii;
char cx;
lein=strlen(input);
if(nx=lein%4){//处理最左端不足4位的情况
for(cx=0;i<nx;(cx<<=1)+=(*(input+i++)=='1' ? 1 : 0));
*output=cx+(cx>9 ? 0x37 : '0');
i=1;
}

for(ii=nx;ii<lein;ii+=4){//每4位一组变换成字符
for(j=0,cx=0;j<4;(cx<<=1)+=(*(input+ii+j++)=='1' ? 1 : 0));
*(output+i++)=cx+(cx>9 ? 0x37 : '0');
}
*(output+i)=NULL;
}

void main(void){/*主程序*/
char i,ii,rc,(*pBin)[1001],output[251];
int nDec=0,n;
printf("要输入几组二进制数?\nnGroup=");
scanf("%d",&n);
if(!(pBin=(char (*)[1001])malloc(n*1001))){
printf("申请内存失败!\n");
exit(0);
}
for(ii=0;ii<n;ii++){
printf("请输入第%d个二进制数!\nBin%d=",ii+1,ii+1);
for(i=0;;){
if((rc=getch())==0xD || i==1000){
printf("\n");
break;//遇到回车或长度到1000位则结束输入
}
else if(rc=='\b' && i){//处理退位修改
printf("\b%c\b",' ');
i--;
}
else if(rc=='0'||rc=='1'){//只允许输入'1'和'0'
printf("%c",rc);//显示输入字符
if(!i && rc=='0') continue;//不要前导0
pBin[ii][i++]=rc;//存储输入字符
}
}
pBin[ii][i]=NULL;//设置字符串结束标记
}
for(i=0;i<n;i++){
convert(pBin[i],output);//调用自定义函数转换成十六进制串
printf("Case %d:0x%s\n",i+1,output);
}
free(pBin);
}

热点内容
python读取ini 发布:2025-09-20 10:06:46 浏览:484
仿联盟啦源码 发布:2025-09-20 09:49:25 浏览:658
在我的世界里如何找服务器 发布:2025-09-20 09:46:55 浏览:266
linux当交换机 发布:2025-09-20 09:40:29 浏览:448
ts文件加密 发布:2025-09-20 09:27:06 浏览:663
mysql优化数据库 发布:2025-09-20 09:23:22 浏览:938
汽车加装哪些实用的智能配置 发布:2025-09-20 08:55:21 浏览:981
主机编译代码性能主要靠什么决定 发布:2025-09-20 08:54:45 浏览:741
我的世界服务器如何后台发消息 发布:2025-09-20 08:42:28 浏览:25
真空压缩棉被 发布:2025-09-20 08:38:33 浏览:634