當前位置:首頁 » 編程語言 » 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進制的字元串,轉換成一個數,可以參照以上程序很容易就編出來了

熱點內容
emojijava 發布:2024-07-27 12:57:07 瀏覽:156
編程培訓福州 發布:2024-07-27 12:28:06 瀏覽:876
哈弗h6女生適合哪個配置 發布:2024-07-27 12:10:52 瀏覽:954
memcached啟動腳本 發布:2024-07-27 11:55:41 瀏覽:558
電動車怎麼看配置 發布:2024-07-27 11:55:05 瀏覽:238
mfc打開默認文件夾 發布:2024-07-27 11:41:23 瀏覽:648
電腦找不到伺服器的原因 發布:2024-07-27 11:33:58 瀏覽:864
sql2005操作 發布:2024-07-27 11:33:19 瀏覽:437
安卓什麼app軟體可以代替藍牙 發布:2024-07-27 11:24:50 瀏覽:745
vb編譯運行 發布:2024-07-27 11:14:42 瀏覽:754