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

c语言2进制转16进制

发布时间: 2024-02-25 09:28:57

‘壹’ 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);
}

‘贰’ 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语言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进制的字符串,转换成一个数,可以参照以上程序很容易就编出来了

热点内容
魅族手机怎么找回密码 发布:2025-03-14 02:35:48 浏览:296
配置高低主要看什么 发布:2025-03-14 01:49:22 浏览:85
locpython 发布:2025-03-14 01:12:50 浏览:342
java数组的定义方法 发布:2025-03-14 00:53:25 浏览:517
压缩性绷带 发布:2025-03-14 00:30:21 浏览:185
如何给树莓派编译适合的软件 发布:2025-03-14 00:29:45 浏览:377
c语言编译器云盘链接 发布:2025-03-14 00:25:23 浏览:350
电脑上哪个游戏可以移植到安卓上 发布:2025-03-14 00:10:32 浏览:474
tcl编译器 发布:2025-03-13 23:52:59 浏览:325
linuxnamed 发布:2025-03-13 23:45:29 浏览:365