国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C++ > 正文

2~62位任意進(jìn)制轉(zhuǎn)換方法(c++)

2020-01-26 14:03:48
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

進(jìn)制轉(zhuǎn)換的符號(hào)表為[0-9a-zA-Z],共61個(gè)字符,最大可表示62進(jìn)制。

思路是原進(jìn)制先轉(zhuǎn)換為10進(jìn)制,再轉(zhuǎn)換到目標(biāo)進(jìn)制。

疑問(wèn):

對(duì)于負(fù)數(shù),有小伙伴說(shuō)可以直接將符號(hào)丟棄,按照整數(shù)進(jìn)行進(jìn)位轉(zhuǎn)換,最后再將負(fù)號(hào)補(bǔ)回來(lái),我認(rèn)為這種做法是不對(duì)的。

正確的做法是:考慮好按照16位(short)還是32位(int)抑或64位(long long),先求出二進(jìn)制補(bǔ)碼(這時(shí)候就正負(fù)數(shù)就統(tǒng)一了),將二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制后在轉(zhuǎn)換為其他進(jìn)制(如果有小伙伴知道如何直接將二進(jìn)制轉(zhuǎn)換為任意進(jìn)制的方法可以留言告訴我,不勝感激。注意這里的任意進(jìn)制不是單純的8 16等2的冪次進(jìn)制,還有其他的比如7、9等)。

下面貼上這種我認(rèn)為針對(duì)負(fù)數(shù)的處理方法不太合適的代碼:

輸入格式:原進(jìn)制,目標(biāo)進(jìn)制,原進(jìn)制下的數(shù)字(用字符串表示)

輸出格式:目標(biāo)進(jìn)制下的數(shù)字

#include <iostream>#include <string>#include <cmath>using namespace std;//將任意字符轉(zhuǎn)換為十進(jìn)制,其中a-z代表10-35,A-Z代表36-61,用對(duì)應(yīng)的ASCII碼調(diào)整就好long long convertToDec(char c){ long long decNum; if(c>='a' && c<='z')  decNum=c-87; else if(c>='A' && c<='Z')  decNum=c-29; else if(c>='0' && c<='9')  decNum=c-48; return decNum;}//將十進(jìn)制轉(zhuǎn)換為這些字符char convertToDec(long long c){ long long objchar; if(c>=10 && c<=35)  objchar=c+87; else if(c>=36 && c<=61)  objchar=c+29; else if(c>=0 && c<=9)  objchar=c+48; return objchar;}int main(){ int src; int obj; string num; while(cin>>src>>obj>>num)  {   bool IsNegative=false;   if(num[0]=='-')    {     num.erase(0);     IsNegative=true;    }   long long decNum=0;//十進(jìn)制數(shù)(中間數(shù))   for(long long i=0;i<num.size();++i)    decNum+=convertToDec(num[i])*pow(src,num.size()-1-i);   string strTmp;   long long tmp;   while(decNum>0)    {     tmp=decNum % obj;     strTmp=convertToDec(tmp)+strTmp;     decNum/=obj;    }   if(IsNegative)    strTmp='-'+strTmp;   cout<<strTmp<<endl;  } return 0;}

以上這篇2~62位任意進(jìn)制轉(zhuǎn)換方法(c++)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 迁西县| 宁乡县| 大安市| 扶风县| 皋兰县| 偏关县| 婺源县| 新密市| 贵定县| 信丰县| 长丰县| 长春市| 潜山县| 互助| 富源县| 上高县| 离岛区| 方城县| 云浮市| 迭部县| 太湖县| 缙云县| 开原市| 磐安县| 兰坪| 塘沽区| 平定县| 普洱| 永顺县| 西平县| 枣强县| 环江| 都江堰市| 白玉县| 嘉善县| 内黄县| 淳安县| 马公市| 丰原市| 黄平县| 平原县|