c語言2進制轉16進制
『壹』 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]='