當前位置:首頁 » 編程語言 » c語言二進制轉16進制

c語言二進制轉16進制

發布時間: 2022-02-21 20:07:03

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進制的字元串,轉換成一個數,可以參照以上程序很容易就編出來了

⑵ 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語言二進制八進制十進制16進制怎麼轉換

二進制轉換成八進制數
(1)二進制數轉換成八進制數:對於整數,從低位到高位將二進制數的每三位分為一組,若不夠三位時,在高位左面添0,補足三位,然後將每三位二進制數用一位八進制數替換,小數部分從小數點開始,自左向右每三位一組進行轉換即可完成。例如:
將二進制數1101001轉換成八進制數,則
(001 101 001)2
| | |
( 1 5 1)8
( 1101001)2=(151)8

(2)八進制數轉換成二進制數:只要將每位八進制數用三位二進制數替換,即可完成轉換,例如,把八進制數(643.503)8,轉換成二進制數,則
(6 4 3 . 5 0 3)8
| | | | | |
(110 100 011 . 101 000 011)2
(643.503)8=(110100011.101000011)2
4、二進制與十六進制之間的轉換
(1)二進制數轉換成十六進制數:由於2的4次方=16,所以依照二進制與八進制的轉換方法,將二進制數的每四位用一個十六進制數碼來表示,整數部分以小數點為界點從右往左每四位一組轉換,小數部分從小數點開始自左向右每四位一組進行轉換。
(2)十六進制轉換成二進制數
如將十六進制數轉換成二進制數,只要將每一位十六進制數用四位相應的二進制數表示,即可完成轉換。
例如:將(163.5B)16轉換成二進制數,則
( 1 6 3 . 5 B )16
| | | | |
(0001 0110 0011. 0101 1011 )2
(163.5B)16=(101100011.01011011)2

⑷ C語言中,十六進制轉二進制

//將16進制的數保存到一個數組中,並將它一個個輸出
#include <iostream>
using namespace std;

int main()
{
int n = 0x3C;
int a[8];
int i;
for (i = 0; i != 8; ++i)
{
a[8 - 1 - i] = n % 2;
n /= 2;
}
for (i = 0; i != 8; ++i)
{
cout << a[i];
}
cout << endl;
return 0;
}

⑸ 如何將C語言程序轉換成2進制或者16進制代碼

二進或16十進制代碼是看不懂的,象亂碼。
你想說的是如何看C程序的目標程序的匯編代碼。
多數C語言編譯器可以直接產生匯編代碼的,類型名是.ASM
如果你用的命令行編譯的,可以讓你帶開關項的。
我用C++BUILDER6可以生成匯編代碼給你看一看。

⑹ 單片機c語言中,怎麼快速把二進制數轉成十六進制數

直接用查表對應的方式可以實現快速轉換。
1、一位數十六進制與二進制對應表
十六進制 二進制
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
A 1010
B 1011
C 1100
D 1101
E 1110
F 1111
2、轉換方法:二進制以小數點為分隔,往前往後每四位劃為一組,不足四位補0,按上表用對應的十六進制數字代入即可。

⑺ C語言,將存放在數組里的二進制數轉換成十六進制

Zbuf如果不是字元串是不會存成0x開頭的16進制的,但是可以輸出成01開頭的16進制
而Buf數組是可以用按權展開的方式變成10進制的。
如果能夠看明白我上面的兩句話,我可以幫你寫一個Buf數組到10進制的轉換函數

⑻ C語言將二進制數N轉換成16進制的程序

這段代碼你試試,由於取值范圍的限制,只能實現8位二進制的轉換
你可以試試擴大取值范圍,加以相應變化
個人能力有限,拋磚引玉,希望能給你點啟發。。。
#include<math.h>
#include <stdio.h>
void main()
{int a,b=1,c,d,e;
int i,j=0,num[8],s[8];
char zh[8];
int shuju(int x);
scanf("%d",&a);

/*實現二進制的分解輸入,把二進制的每一位數值導入到數組當中*/
if(-1<a&&a<11111112)
{for(i=0;i<8;i++)
{b=10*b;
c=b/10;
d=a/c;
num[i]=d%10;
if(num[i]>1)
{printf("輸入錯誤,不符合二進制\n");
e=1;
break;}}}
else{printf("輸入錯誤,超出范圍\n");
e=1;}

/*對數組中的值進行重組,每4位編成一個四位數與子函數實現對比調用*/
if(e!=1)
{for(i=0;i<8;i=i+4,j++)
{s[j]=num[i]+num[i+1]*10+num[i+2]*100+num[i+3]*1000;
zh[j]=shuju(s[j]);
}
for(;j-1>=0;j--)
{if(zh[j-1]<10) printf("%d",zh[j-1]);
else printf("%c",zh[j-1]);}
printf("\n");
};
}

/*對比調用*/
int shuju(int x)
{char y;
switch(x)
{case 0: y=0;break;
case 1: y=1;break;
case 10: y=2;break;
case 11: y=3;break;
case 100: y=4;break;
case 101: y=5;break;
case 110: y=6;break;
case 111: y=7;break;
case 1000: y=8;break;
case 1001: y=9;break;
case 1010: y='A';break;
case 1011: y='B';break;
case 1100: y='C';break;
case 1101: y='D';break;
case 1110: y='E';break;
case 1111: y='F';break;
}
return(y);}

⑼ c語言怎麼把16進制轉化為二進制

//將16進制的數保存到一個數組中,並將它一個個輸出
#include<stdio.h>
#defineN16
intmain()
{
intn;
inta[N];
inti;
printf("Inputa16進制數:");
scanf("%x",&n);
for(i=0;i!=N;++i)
{
a[N-1-i]=n%2;
n/=2;
}
for(i=0;i!=N;++i)
{
printf("%d",a[i]);
if((i+1)%4==0)
printf("");
}
printf(" ");
return0;
}

示例運行結果:

Input a 16進制數: abcd

1010 1011 1100 1101

⑽ 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);
}

熱點內容
加密移動硬碟忘記密碼 發布:2025-09-20 12:31:47 瀏覽:517
資料庫約束是什麼 發布:2025-09-20 12:14:07 瀏覽:740
我的世界統一驗證伺服器 發布:2025-09-20 11:51:59 瀏覽:187
dialogandroid 發布:2025-09-20 11:32:18 瀏覽:472
手機軟體用什麼伺服器 發布:2025-09-20 11:26:35 瀏覽:361
搜索php內容 發布:2025-09-20 11:25:05 瀏覽:226
python的quote 發布:2025-09-20 11:07:56 瀏覽:338
vb60連接資料庫 發布:2025-09-20 10:56:18 瀏覽:289
c語言ltoa 發布:2025-09-20 10:51:35 瀏覽:509
mysql的存儲過程參數類型 發布:2025-09-20 10:41:58 瀏覽:819