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

十六進制轉十進制c語言

發布時間: 2022-04-20 12:59:42

❶ 用c語言編寫一個將十六進制數轉換為十進制數的程序

直接用printf就可以實現啊02x。0表示右對齊不夠的左邊補0;2代表以兩位數顯示;x代表以16進制顯示
#include
int
main(int
argc,
char*
argv[])
{
int
i=17;
printf("%02x\n",i);
system("pause");
return
0;
}

❷ c語言中十六進制怎麼轉換成十進制

#include<stdio.h>
#include<math.h>
#include<string.h>

/*任意進制數轉十進制數*/
/*char*value:其他進制數,以字元串形式存儲*/
/*int*result:轉換後的十進制數*/
/*intradix:待轉換的進制*/
/*R進制數共n位,第n位表示為Xn。轉換後的10進制數表示為Y*/
/*Y=Xn*R^0+Xn-1*R^1+Xn-2*R^2+……+X1*R^n-1*/
voidothers2Decimal(char*value,int*result,intradix){
intdigit,i,j;

*result=0;
for(i=strlen(value)-1,j=0;i>=0;i--,j++){
if(value[i]>='0'&&value[i]<='9')
digit=value[i]-'0';
if(value[i]>='a'&&value[i]<='z')/*十以上進制處理,小寫字母*/
digit=value[i]-'a'+10;
if(value[i]>='A'&&value[i]<='Z')/*十以上進制處理,大寫字母*/
digit=value[i]-'A'+10;
*result+=digit*pow(radix,j);
}
}

intmain(void){
char*value="ff";
intradix=16,result;

printf("16進制數:%s 10進制轉換結果:",value);
others2Decimal(value,&result,radix);
printf("%d ",result);
putchar(' ');

getch();/*屏幕暫留*/
return0;
}

運行結果

❸ 如何用C語言將一個十六進制數字轉換為十進制

需要准備的材料分別有:電腦、C語言編譯器。

1、首先,打開C語言編譯器,新建一個初始.cpp文件,例如:test.cpp。

❹ c語言中16進制轉換為十進制

最簡單的使用scanf()函數和printf()函數進行格式轉換,以16進制格式輸入,再以10進制格式輸出。

程序代碼如下:

#include<stdio.h>

int main()

{

int a=0;

int i=0;

scanf("%x",&a);

printf("%d",a);

return 0;

}

運行結果:

(4)十六進制轉十進制c語言擴展閱讀:

scanf函數與printf函數的用法很像,都是以格式化的形式進行操作,例如上述程序中scanf("%x", &a);就是將輸入數據以十六進制格式存儲到變數a中。

"%x"是將字元串A23CD以十六進制形式輸入a中,如果將"%x"換成為"%d"的話,就是將字元串A23CD以十進制形式輸入a中,這顯然是錯誤的,因為將A23CD轉換為十進制的時候,無法解析A,CD等字元,所以得出的結果就是錯誤的。

❺ 十六進制轉十進制,C語言

#include<stdio.h>
#include <stdlib.h> //system 包含
#include<math.h>
double transition(char*); //聲明還是提到函數外
int main(){
char str[10];
double a;

printf("Enter the hexadecimal number: ");
gets(str);
a=transition(str);
printf("%.0lf\n",a); //輸出double要用%lf
system("pause");

return 0; //main返回
}
double transition(char str[]){
int i=0,n,x;
double sum=0;
int trans_char_dig(char);
while(str[i]!=0){
i++;
}
n=i;
while(i>0){
x=trans_char_dig(str[n-i]);
sum=x*pow(16,i-1)+sum;
i--;
}
return sum;
}
int trans_char_dig(char c){
if(c>=48&&c<=57){
return c-48;
}
else if(c>=65&&c<=70){
return c-55;
}
else if(c>=97&&c<=102){
return c-87;
}
else{
printf("error!");
exit(0);
}
}

❻ C語言如何實現十六進制數到十進制數的轉化

可以根據16進制轉10進制的演算法(即各位位碼值乘以位權之和)來實現該功能。


具體實現方法可以參考如下程序:

#include<stdio.h>
voidmain()
{
inthe;
intre=0;//保存轉換為10進制的結果
intk=16;//16進制
intn=1;//位權
scanf("%d",&he);//接收用戶輸入的16進制數,不含0x前綴
while(he!=0)
{
re+=(he%10)*n;//取出各位位碼值,並乘以對應的位權值
he/=10;//去掉16進制數的最低位,次低位變為最低位
n*=k;//位權乘以16
}
printf("%d",re);//輸出轉換後的結果
}

❼ C語言如何實現十六進制轉換成十進制

C語言實現十六進制轉換成十進制如下:

例如將十六進制數字 9FA8C 轉換成十進制

9FA8C = 9×164 + 15×163 + 10×162 + 8×161 + 12×160 = 653964(十進制)。

從右往左看,第1位的位權為 160=1,第2位的位權為 161=16,第3位的位權為 162=256,第4位的位權為 163=4096,第5位的位權為 164=65536 …… 第n位的位權就為 16n-1。

將各個位的數字乘以位權,然後再相加,就得到了十進制形式。

十六進制數的第0位的權值為16的0次方,第1位的權值為16的1次方,第2位的權值為16的2次方。

所以,在第N(N從0開始)位上,如果是是數 X (X 大於等於0,並且X小於等於 15,即:F)表示的大小為 X * 16的N次方。

再例如:十六進制:EA7 = 14×162 + 10×161 + 7×160 = 3751(十進制)。



(7)十六進制轉十進制c語言擴展閱讀:

C語言10進制轉16進制

把十進制的數不停除以16的余數按從右到左的順序排起來就是16進制,例如:55/16=0餘5例如100 100/16=6餘4 6/16餘6,所以就是64,再例如1000 1000/16=62餘8 62/16=3餘12 3/16餘3所以結果是3C8 //。

對於整數部分,用被除數反復除以2,除第一次外,每次除以2均取前一次商的整數部分作被除數並依次記下每次的余數。另外,所得到的商的最後一位余數是所求二進制數的最高位。

對於小數部分,採用連續乘以基數2,並依次取出的整數部分,直至結果的小數部分為0為止。

❽ C語言編程 十六進制轉化成十進制

#include<iostream>
using namespace std;
int cf(int a,int b)//這是算乘方的函數,返回的結果為a的b次方
{
int x=1,i;
for (i=1;i<=b;i++)
x*=a;
return x;
}
int zhuanhuan(char a)
{
if (a-'0'>=0&&a-'0'<=9)
return a-'0';
else switch(a)
{
case 'A':return 10;
case 'B':return 11;
case 'C':return 12;
case 'D':return 13;
case 'E':return 14;
case 'F':return 15;
}
}
int main()
{
char a[100];//用字元數組存儲這個數操作方便
int l,i,s=0,t;
scanf("%s",a);
l=strlen(a);//測量這個數的長度,即位數
for (i=0;i<l;i++)
{
//把字元類型的變數轉換成整數類型
t=zhuanhuan(a[i]);
s+=t*cf(16,l-i-1);//依次累加
}
printf("%d\n",s);
return 0;
}

❾ 十六進制數轉換成十進制數C語言

程序代碼:#include <stdio.h>
#include <stdlib.h>
#include <math.h>/*求字元串長度函數*/
int strlengh(char *s)
{
int i;
for(i=0;s[i]!='\0';i++);
return i;
}/*16進制轉10進制函數*/
double tran(char *s)
{
int len=strlengh(s);/*求輸入的字元串的長度*/
int ss[100] ;/*用於存放對字元的轉換如f:15*/
int i;
double n=0.0;
/*對字元進行處理,將其每一位轉換為整數,之後運算進行處理*/
for(i=0;i<len;i++)
{
if(s[i]=='F'||s[i]=='f')ss[i]=15;
else if(s[i]=='E'||s[i]=='e')ss[i]=14;
else if(s[i]=='D'||s[i]=='d')ss[i]=13;
else if(s[i]=='C'||s[i]=='c')ss[i]=12;
else if(s[i]=='B'||s[i]=='b')ss[i]=11;
else if(s[i]=='A'||s[i]=='a')ss[i]=10;
else ss[i]=(int)s[i];
}
/*對轉換得到的整數進行轉換處理*/
for(i=0;i<len;i++)
{
n+=ss[i]*pow(16,len-1-i);
}
return n;/*結果返回*/
}void main()
{
/*接收16進制數*/
char Hex[100];
printf("Please input Hex:\n");
gets(Hex);
/*轉換*/
int Dec=(int)tran(Hex);
printf("Output Result:%d\n",Dec);}執行結果:

❿ c語言16進制與10進制的轉換

這個函數的int HtoD(char *a);就是將16進制的數用字元數組保存,把數組首地址作為參數傳遞給函數,函數返回轉換後的10進制整型數值。

詳細說明,我寫在備注里了,你看以參考。

#include<stdio.h>
#include<string.h>
intHtoD(char*a)//將16進制的數字用字元串保存,並將字元串首地址作為參數傳遞
{
intnum=0,i;
for(i=0;i<strlen(a);i++)//迭代迭代次數為a數組的長度形參a是指針,初值是指向字元數組的首地址,也就是指向16進制數字的左邊第1位
{
//每次迭代取指針指向的地址值進行判斷,同時指針不斷往右移動
if(*(a+i)>='0'&&*(a+i)<='9')//如果當前位是0~9的數字,那麼總數值num累加同時前值*16(因為左邊是高位,從高位往低位數,每多1位高位就*16)
num=num*16+*(a+i)-'0';
elseif(*(a+i)>='A'&&*(a+i)<='Z')//如果當前位是大寫字母A~Z,轉換成10進制數值,再累加
num=num*16+*(a+i)-'A'+10;
elseif(*(a+i)>='a'&&*(a+i)<='z')//如果當前位是小寫字母a~z,轉換成10進制數值,再累加
num=num*16+*(a+i)-'a'+10;
else
return-1;//表示輸入錯誤的數
}
returnnum;
}
intmain()
{
chara[]="1F";
printf("1F=%d",HtoD(a));//這里我寫了簡單的調用,列印結果:1F=31
return0;
}
熱點內容
python和excel 發布:2024-03-29 07:47:03 瀏覽:860
postfix源碼下載 發布:2024-03-29 07:42:03 瀏覽:142
怎麼在電腦上玩手機伺服器 發布:2024-03-29 07:30:13 瀏覽:141
倍福加密 發布:2024-03-29 07:24:42 瀏覽:844
如何用密碼鎖住並隱藏工作表 發布:2024-03-29 07:03:28 瀏覽:327
按鍵精靈滑鼠腳本 發布:2024-03-29 06:47:41 瀏覽:20
pythonhome 發布:2024-03-29 06:47:36 瀏覽:170
dns配置錯誤怎麼修理 發布:2024-03-29 06:36:15 瀏覽:981
電信客戶6位密碼是什麼 發布:2024-03-29 06:35:42 瀏覽:566
b星演算法找門 發布:2024-03-29 06:27:13 瀏覽:774