這期內(nèi)容當中小編將會給大家?guī)碛嘘P(guān)使用C/C++怎么實現(xiàn)進制相互轉(zhuǎn)換,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

其它進制轉(zhuǎn)為十進制
在實現(xiàn)這個需求之前,先簡單介紹一個c標準庫中的一個函數(shù):
long strtol( const char *str, char **str_end, int base);
參數(shù)詳細說明請 參考文檔
注意:這個函數(shù)在c標準庫stdlib中,所以需要 #include<cstdlib>
用法參考
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
int main(void)
{
// parsing with error handling
const char *p = "10 200000000000000000000000000000 30 -40 junk";
printf("Parsing '%s':\n", p);
char *end;
for (long i = strtol(p, &end, 10);p != end;i = strtol(p, &end, 10))
{
printf("'%.*s' -> ", (int)(end-p), p);
p = end;
if (errno == ERANGE){
printf("range error, got ");
errno = 0;
}
printf("%ld\n", i);
}
// parsing without error handling
printf("\"1010\" in binary --> %ld\n", strtol("1010",NULL,2));
printf("\"12\" in octal --> %ld\n", strtol("12",NULL,8));
printf("\"A\" in hex --> %ld\n", strtol("A",NULL,16));
printf("\"junk\" in base-36 --> %ld\n", strtol("junk",NULL,36));
printf("\"012\" in auto-detected base --> %ld\n", strtol("012",NULL,0));
printf("\"0xA\" in auto-detected base --> %ld\n", strtol("0xA",NULL,0));
printf("\"junk\" in auto-detected base --> %ld\n", strtol("junk",NULL,0));
}Output
Parsing '10 200000000000000000000000000000 30 -40 junk': '10' -> 10 ' 200000000000000000000000000000' -> range error, got 9223372036854775807 ' 30' -> 30 ' -40' -> -40 "1010" in binary --> 10 "12" in octal --> 10 "A" in hex --> 10 "junk" in base-36 --> 926192 "012" in auto-detected base --> 10 "0xA" in auto-detected base --> 10 "junk" in auto-detected base --> 0
更多詳細說明請 參考文檔
接下來使用這個函數(shù)來實現(xiàn)其它進制轉(zhuǎn)為十進制的需求,具體請參考代碼:
#include<iostream>
#include<cstdlib>
using namespace std;
int main(){
//把8進制的17轉(zhuǎn)化為10進制打印輸出
string str = "17";
char *tmp ;
long result = strtol(str.c_str(),&tmp,8);
cout<<result;
return 0;
}Output
15
十進制轉(zhuǎn)為其他進制
目前沒有找到可以使用的庫函數(shù)來方便的實現(xiàn)這個需求,所以自己實現(xiàn)了一下,具體請參考代碼:
#include<iostream>
#include<algorithm>
using namespace std;
//digital為10進制數(shù),r為需要轉(zhuǎn)換的目標進制,返回目標進制數(shù)
string dtox(int digital,int r){
string result="";
const char s[37]="0123456789abcdefghijklmnopqrstuvwxyz";
if(digital==0){
return "0";
}
while(digital!=0){
int tmp =digital%r;
result+=s[tmp];
digital/=r;
}
reverse(result.begin(),result.end());
return result;
}
int main(){
cout<<"十進制10轉(zhuǎn)為16進制結(jié)果:"<<dtox(10,16)<<endl;
cout<<"十進制10轉(zhuǎn)為8進制結(jié)果:"<<dtox(10,8)<<endl;
cout<<"十進制10轉(zhuǎn)為2進制結(jié)果:"<<dtox(10,2)<<endl;
cout<<"十進制10轉(zhuǎn)為10進制結(jié)果:"<<dtox(10,10)<<endl;
}Output:
十進制10轉(zhuǎn)為16進制結(jié)果:a 十進制10轉(zhuǎn)為8進制結(jié)果:12 十進制10轉(zhuǎn)為2進制結(jié)果:1010 十進制10轉(zhuǎn)為10進制結(jié)果:10
上述就是小編為大家分享的使用C/C++怎么實現(xiàn)進制相互轉(zhuǎn)換了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設公司行業(yè)資訊頻道。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)建站www.yijiale78.com,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
名稱欄目:使用C/C++怎么實現(xiàn)進制相互轉(zhuǎn)換-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://www.yijiale78.com/article34/ceiise.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、微信小程序、網(wǎng)站導航、網(wǎng)站設計公司、手機網(wǎng)站建設、全網(wǎng)營銷推廣
聲明:本網(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)
猜你還喜歡下面的內(nèi)容