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

熱點內容
ios應用上傳 發布:2024-09-08 09:39:41 瀏覽:439
ios儲存密碼哪裡看 發布:2024-09-08 09:30:02 瀏覽:871
opensslcmake編譯 發布:2024-09-08 09:08:48 瀏覽:653
linux下ntp伺服器搭建 發布:2024-09-08 08:26:46 瀏覽:744
db2新建資料庫 發布:2024-09-08 08:10:19 瀏覽:173
頻率計源碼 發布:2024-09-08 07:40:26 瀏覽:780
奧迪a6哪個配置帶後排加熱 發布:2024-09-08 07:06:32 瀏覽:101
linux修改apache埠 發布:2024-09-08 07:05:49 瀏覽:209
有多少個不同的密碼子 發布:2024-09-08 07:00:46 瀏覽:566
linux搭建mysql伺服器配置 發布:2024-09-08 06:50:02 瀏覽:995