當前位置:首頁 » 編程語言 » 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 瀏覽:376
c語言編譯器雲盤鏈接 發布:2025-03-14 00:25:23 瀏覽:350
電腦上哪個游戲可以移植到安卓上 發布:2025-03-14 00:10:32 瀏覽:473
tcl編譯器 發布:2025-03-13 23:52:59 瀏覽:324
linuxnamed 發布:2025-03-13 23:45:29 瀏覽:365