欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2017年06月24日 10:49:42   投稿:jingxian  
下面小編就為大家?guī)硪黄?~62位任意進(jìn)制轉(zhuǎn)換方法(c++)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

進(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)制。

疑問:

對(duì)于負(fù)數(shù),有小伙伴說可以直接將符號(hào)丟棄,按照整數(shù)進(jìn)行進(jìn)位轉(zhuǎn)換,最后再將負(fù)號(hào)補(bǔ)回來,我認(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è)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++找出字符串中出現(xiàn)最多的字符和次數(shù),時(shí)間復(fù)雜度小于O(n^2)

    C++找出字符串中出現(xiàn)最多的字符和次數(shù),時(shí)間復(fù)雜度小于O(n^2)

    今天小編就為大家分享一篇關(guān)于C++找出字符串中出現(xiàn)最多的字符和次數(shù),時(shí)間復(fù)雜度小于O(n^2),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • ?C++?new?和?delete?關(guān)鍵字詳解

    ?C++?new?和?delete?關(guān)鍵字詳解

    這篇文章主要介紹了?C++?new?和?delete?關(guān)鍵字詳解,文章圍繞主題展開new?和?delete?的使用方法的介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • C語言求連續(xù)最大子數(shù)組和的方法

    C語言求連續(xù)最大子數(shù)組和的方法

    這篇文章主要介紹了C語言求連續(xù)最大子數(shù)組和的方法,包含了數(shù)組的常見操作及相關(guān)技巧,需要的朋友可以參考下
    2014-09-09
  • C++實(shí)現(xiàn)LeetCode(150.計(jì)算逆波蘭表達(dá)式)

    C++實(shí)現(xiàn)LeetCode(150.計(jì)算逆波蘭表達(dá)式)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(150.計(jì)算逆波蘭表達(dá)式),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++函數(shù)三種傳參形式(指針傳遞、引用傳遞、值傳遞)

    C++函數(shù)三種傳參形式(指針傳遞、引用傳遞、值傳遞)

    不論是哪種參數(shù)傳遞方式,都有形參和實(shí)參之分,本文主要介紹了C++函數(shù)三種傳參形式(指針傳遞、引用傳遞、值傳遞),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • C/C++表格組件Qt?TableWidget應(yīng)用詳解

    C/C++表格組件Qt?TableWidget應(yīng)用詳解

    本文詳細(xì)講解了C/C++中使用列表框組件Qt?TableWidget的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • C語言運(yùn)算符與表達(dá)式

    C語言運(yùn)算符與表達(dá)式

    這篇文章主要介紹了C語言運(yùn)算符與表達(dá)式,表達(dá)式是C語言的主體。在C語言中,表達(dá)式由操作符和操作數(shù)組成,更多相關(guān)介紹需要的小伙伴可以參考下面文章內(nèi)容
    2022-07-07
  • 關(guān)于C++復(fù)制構(gòu)造函數(shù)的實(shí)現(xiàn)講解

    關(guān)于C++復(fù)制構(gòu)造函數(shù)的實(shí)現(xiàn)講解

    今天小編就為大家分享一篇關(guān)于關(guān)于C++復(fù)制構(gòu)造函數(shù)的實(shí)現(xiàn)講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • visual studio2019的安裝以及使用圖文步驟詳解

    visual studio2019的安裝以及使用圖文步驟詳解

    這篇文章主要介紹了visual studio2019的安裝以及使用圖文步驟詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • C++實(shí)現(xiàn)LeetCode(29.兩數(shù)相除)

    C++實(shí)現(xiàn)LeetCode(29.兩數(shù)相除)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(29.兩數(shù)相除),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07

最新評(píng)論