任意進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制,可以用 strtol()函數(shù)。

創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的商都網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
函數(shù)定義:
long int strtol(const char *nptr,char **endptr,int base);
見(jiàn) 網(wǎng)頁(yè)鏈接? 百度百科。
十進(jìn)制轉(zhuǎn)換為任意進(jìn)制,可以用itoa()函數(shù)。
// itoa 例子
#include?stdio.h
#include?stdlib.h
int?main?(){
int?i;
char?buffer[33];
printf?("Enter?a?number:?");
scanf?("%d",i);????//輸入整數(shù)i
itoa?(i,buffer,10);????//將i轉(zhuǎn)化為10進(jìn)制數(shù),存到buffer中
printf?("decimal:?%s\n",buffer);????//輸出打印buffer
itoa?(i,buffer,16);????//將i轉(zhuǎn)化為16進(jìn)制數(shù),存到buffer中
printf?("hexadecimal:?%s\n",buffer);????//輸出打印buffer
itoa?(i,buffer,2);????//將i轉(zhuǎn)化為2進(jìn)制數(shù),存到buffer中
printf?("binary:?%s\n",buffer);????//輸出打印buffer
return?0;}
c語(yǔ)言將十進(jìn)制數(shù)轉(zhuǎn)換為16進(jìn)制的函數(shù):
#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)制
任意進(jìn)制之間的進(jìn)制轉(zhuǎn)換。需要考慮高精度整形的設(shè)計(jì),用數(shù)組模擬一個(gè)整形變量。一位一位的進(jìn)行進(jìn)制轉(zhuǎn)換,算法思想和十進(jìn)制轉(zhuǎn)換到二進(jìn)制相同,除以目標(biāo)進(jìn)制,余數(shù)為低位。這種進(jìn)制轉(zhuǎn)換實(shí)用性不強(qiáng),一般出現(xiàn)在計(jì)算機(jī)程序競(jìng)賽當(dāng)中。
8,10,16進(jìn)制的轉(zhuǎn)換。在C語(yǔ)言中有不少函數(shù)都能實(shí)現(xiàn)上面幾種進(jìn)制之間的進(jìn)制轉(zhuǎn)換。
推薦其中的sprintf/sscanf函數(shù)。
sprintf格式的規(guī)格如下所示。[]中的部分是可選的。
%[指定參數(shù)][標(biāo)識(shí)符][寬度][.精度]指示符
若想輸出'%'本身時(shí), 請(qǐng)使用'%%'處理。
1. 處理字符方向。負(fù)號(hào)時(shí)表示從后向前處理。
2. 填空字元。 0 的話表示空格填 0;空格是內(nèi)定值,表示空格就放著。
3. 字符總寬度。為最小寬度。
4. 精確度。指在小數(shù)點(diǎn)后的浮點(diǎn)數(shù)位數(shù)。
轉(zhuǎn)換字符
%% 印出百分比符號(hào),不轉(zhuǎn)換。
%c 整數(shù)轉(zhuǎn)成對(duì)應(yīng)的 ASCII 字元。
%d 整數(shù)轉(zhuǎn)成十進(jìn)位。
%f 倍精確度數(shù)字轉(zhuǎn)成浮點(diǎn)數(shù)。
%o 整數(shù)轉(zhuǎn)成八進(jìn)位。
%s 整數(shù)轉(zhuǎn)成字符串。
%x 整數(shù)轉(zhuǎn)成小寫十六進(jìn)位。
%X 整數(shù)轉(zhuǎn)成大寫十六進(jìn)位。
例程(16進(jìn)制和10進(jìn)制之間的轉(zhuǎn)換):
#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、可以根據(jù)16進(jìn)制轉(zhuǎn)10進(jìn)制的算法(即各位位碼值乘以位權(quán)之和)來(lái)實(shí)現(xiàn)該功能。
2、具體實(shí)現(xiàn)方法可以參考如下程序:
#include?stdio.h
void?main()
{
int?he;????
int?re=0;???//?保存轉(zhuǎn)換為10進(jìn)制的結(jié)果
int?k=16;???//?16進(jìn)制
int?n=1;????//?位權(quán)
scanf("%d",?he);??//?接收用戶輸入的16進(jìn)制數(shù),不含0x前綴
while(he?!=?0)??
{
re?+=?(he%10)*n;??//?取出各位位碼值,并乘以對(duì)應(yīng)的位權(quán)值
he?/=?10;???//?去掉16進(jìn)制數(shù)的最低位,次低位變?yōu)樽畹臀?/p>
n?*=?k;?????//?位權(quán)乘以16
}
printf("%d",re);?//?輸出轉(zhuǎn)換后的結(jié)果
}
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;}
當(dāng)前名稱:c語(yǔ)言進(jìn)制轉(zhuǎn)化函數(shù),c語(yǔ)言進(jìn)制
文章轉(zhuǎn)載:http://chinadenli.net/article6/hsgiig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、App設(shè)計(jì)、網(wǎng)站排名、營(yíng)銷型網(wǎng)站建設(shè)、App開(kāi)發(fā)、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)