c語言將十進制數(shù)轉換為16進制的函數(shù):
10年積累的網(wǎng)站制作、成都網(wǎng)站制作經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先網(wǎng)站設計后付款的網(wǎng)站建設流程,更有達茂旗免費網(wǎng)站建設讓你可以放心的選擇與我們合作。
#includestdio.h
main()
{
int u10;
char u16[10];
int w=0,a,b,i;
printf("請輸入一個數(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)轉換為16進制數(shù)字為:",u10);
for(i=w-1;i=0;i--)
{
printf("%c",u16[i]);
}
printf("\n");
}
擴展資料:
十進制數(shù)轉換為二進制數(shù)方法
十進制數(shù)轉換為二進制數(shù)時,由于整數(shù)和小數(shù)的轉換方法不同,所以先將十進制數(shù)的整數(shù)部分和小數(shù)部分分別轉換后,再加以合并。
1. 十進制整數(shù)轉換為二進制整數(shù) 十進制整數(shù)轉換為二進制整數(shù)采用"除2取余,逆序排列"法。具體做法是:用2去除十進制整數(shù),可以得到一個商和余數(shù);再用2去除商,又會得到一個商和余數(shù),如此進行,直到商為零時為止,然后把先得到的余數(shù)作為二進制數(shù)的低位有效位,后得到的余數(shù)作為二進制數(shù)的高位有效位,依次排列起來。
2.十進制小數(shù)轉換為二進制小數(shù)
十進制小數(shù)轉換成二進制小數(shù)采用"乘2取整,順序排列"法。具體做法是:用2乘十進制小數(shù),可以得到積,將積的整數(shù)部分取出,再用2乘余下的小數(shù)部分,又得到一個積,再將積的整數(shù)部分取出,如此進行,直到積中的小數(shù)部分為零,或者達到所要求的精度為止。
然后把取出的整數(shù)部分按順序排列起來,先取的整數(shù)作為二進制小數(shù)的高位有效位,后取的整數(shù)作為低位有效位。
參考資料:
百度百科-十進制
任意進制之間的進制轉換。需要考慮高精度整形的設計,用數(shù)組模擬一個整形變量。一位一位的進行進制轉換,算法思想和十進制轉換到二進制相同,除以目標進制,余數(shù)為低位。這種進制轉換實用性不強,一般出現(xiàn)在計算機程序競賽當中。
8,10,16進制的轉換。在C語言中有不少函數(shù)都能實現(xiàn)上面幾種進制之間的進制轉換。
推薦其中的sprintf/sscanf函數(shù)。
sprintf格式的規(guī)格如下所示。[]中的部分是可選的。
%[指定參數(shù)][標識符][寬度][.精度]指示符
若想輸出'%'本身時, 請使用'%%'處理。
1. 處理字符方向。負號時表示從后向前處理。
2. 填空字元。 0 的話表示空格填 0;空格是內定值,表示空格就放著。
3. 字符總寬度。為最小寬度。
4. 精確度。指在小數(shù)點后的浮點數(shù)位數(shù)。
轉換字符
%% 印出百分比符號,不轉換。
%c 整數(shù)轉成對應的 ASCII 字元。
%d 整數(shù)轉成十進位。
%f 倍精確度數(shù)字轉成浮點數(shù)。
%o 整數(shù)轉成八進位。
%s 整數(shù)轉成字符串。
%x 整數(shù)轉成小寫十六進位。
%X 整數(shù)轉成大寫十六進位。
例程(16進制和10進制之間的轉換):
#include?stdio.h??
#include?limits.h??
int?main()??
{??
char?s[100]?=?{0};??
sprintf(s,?"%x",?INT_MAX);??
printf("%s\n",?s);?//?7fffffff??
char?str[100]?=?"7fffffff";??
int?i?=?0;??
sscanf(str,?"%x",?i);??
printf("%d\n",?i);?//?2147483647??
return?0;???
}
1、打開visualC++6.0-文件-新建-文件-C++SourceFile。
2、輸入預處理命令和主函數(shù):
#includestdio.h? ? ? ? ? ?/*輸入輸出頭文件*/
voidmain()/*空類型:主函數(shù)*/
3、定義變量和數(shù)組的數(shù)據(jù)類型并輸入一個十進制:
intb[16],x,k,r,i;/*定義變量和數(shù)組的數(shù)據(jù)類型為整型*/
printf("輸入一個十進制:");/*輸出文字提示*/
scanf("%d",x);? ? ? ? ?/*輸入一個十進制數(shù)字*/
k=-1;/*將-1賦給k*/
4、用除R取余倒計法將十進制的數(shù)轉化成二進制的數(shù):
do/*用循環(huán)將十進制的數(shù)轉化成二進制的數(shù)*/
{
r=x%2;/*用除R取余倒計法計算二進制*/
b[++k]=r;/*將值賦給數(shù)組*/
x/=2;/*將原數(shù)除2*/
}while(x=1);
5、輸出結果:
for(i=k;i=0;i--)? ? ? ? /*將上面倒計的數(shù)正回來*/
printf("%d",b[i]);/*輸出結果*/
printf("\n");
6、完整的源代碼:
#includestdio.h? ? ? ? ? ?/*輸入輸出頭文件*/
voidmain()/*空類型:主函數(shù)*/
{
intb[16],x,k,r,i;/*定義變量和數(shù)組的數(shù)據(jù)類型為整型*/
printf("輸入一個十進制:");/*輸出文字提示*/
scanf("%d",x);? ? ? ? ?/*輸入一個十進制數(shù)字*/
k=-1;/*將-1賦給k*/
do/*用循環(huán)將十進制的數(shù)轉化成二進制的數(shù)*/
{
r=x%2;/*用除R取余倒計法計算二進制*/
b[++k]=r;/*將值賦給數(shù)組*/
x/=2;/*將原數(shù)除2*/
}while(x=1);
for(i=k;i=0;i--)? ? ? ? /*將上面倒計的數(shù)正回來*/
printf("%d",b[i]);/*輸出結果*/
printf("\n");
}