計算機內(nèi)部按2進制存放數(shù)據(jù),輸入輸出才涉及 10進制,16進制等等。

成都創(chuàng)新互聯(lián)公司致力于網(wǎng)站設(shè)計、成都做網(wǎng)站,成都網(wǎng)站設(shè)計,集團網(wǎng)站建設(shè)等服務(wù)標準化,推過標準化降低中小企業(yè)的建站的成本,并持續(xù)提升建站的定制化服務(wù)水平進行質(zhì)量交付,讓企業(yè)網(wǎng)站從市場競爭中脫穎而出。 選擇成都創(chuàng)新互聯(lián)公司,就選擇了安全、穩(wěn)定、美觀的網(wǎng)站建設(shè)服務(wù)!
所以,你按10進制輸入,按16進制輸出就達到你的目的了。
例如:
int x;
printf("input x\n");
scanf("%d",x); // %d 就是按10進制輸入
printf("The hex is %x\n", x); // %x 就是按16進制輸入
// c/c++ 有 itoa 函數(shù),可以把整型轉(zhuǎn)各種進制,存放于字符數(shù)組s里,
// 例如 2進制: itoa(x,s,2); 8進制: itoa(x,s,8); 16 進制: itoa(x,s,16);
C語言16進制轉(zhuǎn)十進制具體函數(shù)如下:
#include
"stdio.h"
int
main()
{
int
num=0;
int
a[100];
int
i=0;
int
m=0;
int
yushu;
char
hex[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
printf("請輸入一個十進制整數(shù):");
scanf("%d",num);
while(num0)
{
yushu=num%16;
a[i++]=yushu;
num=num/16;
}
printf("轉(zhuǎn)化為十六進制的數(shù)為:0x");
for(i=i-1;i=0;i--)//倒序輸出
{
m=a[i];
printf("%c",hex[m]);
}
printf("\n");
}
C語言是一門通用計算機編程語言,應(yīng)用廣泛。C語言的設(shè)計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產(chǎn)生少量的機器碼以及不需要任何運行環(huán)境支持便能運行的編程語言。
這個函數(shù)的int HtoD(char *a);就是將16進制的數(shù)用字符數(shù)組保存,把數(shù)組首地址作為參數(shù)傳遞給函數(shù),函數(shù)返回轉(zhuǎn)換后的10進制整型數(shù)值。
詳細說明,我寫在備注里了,你看以參考。
#include?stdio.h
#include?string.h
int?HtoD(char?*a)//將16進制的數(shù)字用字符串保存,并將字符串首地址作為參數(shù)傳遞
{
int?num=0,i;
for(i=0;?istrlen(a);?i++)//迭代?迭代次數(shù)為a數(shù)組的長度????形參a是指針,初值是指向字符數(shù)組的首地址,也就是指向16進制數(shù)字的左邊第1位
{
//每次迭代?取指針指向的地址值進行判斷,同時指針不斷往右移動
if(*(a+i)='0'*(a+i)='9')//如果當前位是0~9的數(shù)字,那么總數(shù)值num累加同時前值*16(因為左邊是高位,從高位往低位數(shù),每多1位高位就*16)
num?=?num*16?+?*(a+i)-'0';
else?if(*(a+i)='A'*(a+i)='Z')//如果當前位是大寫字母A~Z,轉(zhuǎn)換成10進制數(shù)值,再累加
num?=?num*16?+?*(a+i)-'A'+10;
else?if(*(a+i)='a'*(a+i)='z')//如果當前位是小寫字母a~z,轉(zhuǎn)換成10進制數(shù)值,再累加
num?=?num*16?+?*(a+i)-'a'+10;
else
return?-1;//表示輸入錯誤的數(shù)
}
return?num;
}
int?main()
{
char?a[]="1F";
printf("1F=%d",HtoD(a));??//這里我寫了簡單的調(diào)用,打印結(jié)果:1F=31
return?0;
}
方案一:
#includestdio.h#includemath.h#includestring.hint main(){char s[50];scanf("%s",s);int t=strlen(s);long sum=0;for(int i=0;it;i++){if(s[i]='A' s[i]='Z')s[i]=int(s[i]-'A')+10+'0';sum+=((s[i]-'0')*(pow(16,t-1-i)));}printf("%ld\n",sum);}
方案二:
#includestdio.hint main(){char s[50];scanf("%s",s);int t;long sum=0;for(int i=0;s[i];i++){if(s[i]='9')t=s[i]-'0';elset=s[i]-'A'+10;sum=sum*16+t;}printf("%ld\n",sum);return 0;}
分享文章:c語言16轉(zhuǎn)10進制函數(shù) c十進制轉(zhuǎn)16進制函數(shù)
URL鏈接:http://chinadenli.net/article6/hppiig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、全網(wǎng)營銷推廣、面包屑導航、網(wǎng)站內(nèi)鏈、搜索引擎優(yōu)化、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)