c语言二进制转十六进制代码,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

*output=cx+(cx>9 ? 0x37 : '0');

i=1;

}

for(ii=nx;ii

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

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

convert(pBin[i],output);//调用自定义函数转换成十六进制串

printf("Case %d:0x%s\n",i+1,output);

}

free(pBin);

}

温馨提示:答案为网友推荐,仅供参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值