c語(yǔ)言將十進(jìn)制數(shù)轉(zhuǎn)換為16進(jìn)制的函數(shù):
成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括遂昌網(wǎng)站建設(shè)、遂昌網(wǎng)站制作、遂昌網(wǎng)頁(yè)制作以及遂昌網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,遂昌網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶(hù)以成都為中心已經(jīng)輻射到遂昌省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶(hù)的支持與信任!
#includestdio.h
main()
{
int u10;
char u16[10];
int w=0,a,b,i;
printf("請(qǐng)輸入一個(gè)數(shù)字--");
scanf("%d",u10);
if(u10==0)
{
u16[0]='0';
w++;
}
else
{
a=u10;
while(a)
{
b=a%16;
if(b10)
{
u16[w]='0'+b;
}
else
{
u16[w]='A'+b-10;
}
a=a/16;
w++;
}
}
printf("\n");
printf("%d(10)轉(zhuǎn)換為16進(jìn)制數(shù)字為:",u10);
for(i=w-1;i=0;i--)
{
printf("%c",u16[i]);
}
printf("\n");
}
擴(kuò)展資料:
十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)方法
十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)時(shí),由于整數(shù)和小數(shù)的轉(zhuǎn)換方法不同,所以先將十進(jìn)制數(shù)的整數(shù)部分和小數(shù)部分分別轉(zhuǎn)換后,再加以合并。
1. 十進(jìn)制整數(shù)轉(zhuǎn)換為二進(jìn)制整數(shù) 十進(jìn)制整數(shù)轉(zhuǎn)換為二進(jìn)制整數(shù)采用"除2取余,逆序排列"法。具體做法是:用2去除十進(jìn)制整數(shù),可以得到一個(gè)商和余數(shù);再用2去除商,又會(huì)得到一個(gè)商和余數(shù),如此進(jìn)行,直到商為零時(shí)為止,然后把先得到的余數(shù)作為二進(jìn)制數(shù)的低位有效位,后得到的余數(shù)作為二進(jìn)制數(shù)的高位有效位,依次排列起來(lái)。
2.十進(jìn)制小數(shù)轉(zhuǎn)換為二進(jìn)制小數(shù)
十進(jìn)制小數(shù)轉(zhuǎn)換成二進(jìn)制小數(shù)采用"乘2取整,順序排列"法。具體做法是:用2乘十進(jìn)制小數(shù),可以得到積,將積的整數(shù)部分取出,再用2乘余下的小數(shù)部分,又得到一個(gè)積,再將積的整數(shù)部分取出,如此進(jìn)行,直到積中的小數(shù)部分為零,或者達(dá)到所要求的精度為止。
然后把取出的整數(shù)部分按順序排列起來(lái),先取的整數(shù)作為二進(jìn)制小數(shù)的高位有效位,后取的整數(shù)作為低位有效位。
參考資料:
百度百科-十進(jìn)制
itoa()函數(shù)可以實(shí)現(xiàn),根據(jù)itoa()第三個(gè)參數(shù)(2/8/10)可以進(jìn)行二、八、十六進(jìn)制的轉(zhuǎn)換,轉(zhuǎn)換后為字符串,如要求是int,可以用atoi實(shí)現(xiàn)字符串與int之間的轉(zhuǎn)換舉例:#include
"stdio.h"#include
"stdlib.h"int
main(){int
L1;printf("輸入數(shù)字\n");scanf("%d",
L1);char
str1[256];char
str2[256];char
str3[256];itoa(L1,
str1,
2);itoa(L1,
str2,
8);itoa(L1,
str3,
16);printf("2進(jìn)制:%s\n8進(jìn)制:%s\n16進(jìn)制:%s\n",str1,str2,str3);return
0;}
#includestdio.h
void P(int a,int n){
int i,p[30]={0};
p[0]=a;
for(i=1;i30;i++){
p[i]=p[i-1]/n;
p[i-1]%=n;}
for(i=29;i=0;i--)if(p[i]!=0)break;
for(;i=0;i--)printf("%d ",p[i]);}
int main(){
int a,n;
printf("輸入一個(gè)整數(shù)\n");
scanf("%d",a);
printf("輸入要轉(zhuǎn)換的進(jìn)制\n");
scanf("%d",n);
P(a,n);
return 0;}
思路:十進(jìn)制整數(shù)轉(zhuǎn)換為十六進(jìn)制整數(shù)采用"除16取余,逆序排列"法。
具體做法是:用16整除十進(jìn)制整數(shù),可以得到一個(gè)商和余數(shù);再用16去除商,又會(huì)得到一個(gè)商和余數(shù),如此進(jìn)行,直到商為0時(shí)為止,然后把先得到的余數(shù)作為十六進(jìn)制數(shù)的低位有效位,后得到的余數(shù)作為十六進(jìn)制數(shù)的高位有效位,依次排列起來(lái)。
參考代碼:
#include?"stdio.h"?
int?main()?
{?
int?num,a[100],i=0,m=0;?
char?hex[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
scanf("%d",num);?
while(num0)?
{?
a[i++]=num%16;?
num=num/16;?
}?
printf("轉(zhuǎn)化為十六進(jìn)制的數(shù)為:");?
for(i=i-1;i=0;i--)//倒序輸出?
{?
m=a[i];
printf("%c",hex[m]);?
}?
printf("\n");?
}
/*
運(yùn)行結(jié)果:
17
轉(zhuǎn)化為十六進(jìn)制的數(shù)為:11
*/