欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

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

來源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語言|點(diǎn)擊: 次

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

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

疑問:

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

正確的做法是:考慮好按照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)為針對負(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,用對應(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++)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持我們。

上一篇:VC List Control控件如何刪除選中的記錄實(shí)例詳解

欄    目:C語言

下一篇:C語言中判斷一個char*是不是utf8編碼

本文標(biāo)題:2~62位任意進(jìn)制轉(zhuǎn)換方法(c++)

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/1427.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有