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

2~62位任意進制轉換方法(c++)

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

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

思路是原進制先轉換為10進制,再轉換到目標進制。

疑問:

對于負數,有小伙伴說可以直接將符號丟棄,按照整數進行進位轉換,最后再將負號補回來,我認為這種做法是不對的。

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

下面貼上這種我認為針對負數的處理方法不太合適的代碼:

輸入格式:原進制,目標進制,原進制下的數字(用字符串表示)

輸出格式:目標進制下的數字

#include <iostream>
#include <string>
#include <cmath>
using namespace std;

//將任意字符轉換為十進制,其中a-z代表10-35,A-Z代表36-61,用對應的ASCII碼調整就好
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;
}

//將十進制轉換為這些字符
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;//十進制數(中間數)
   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位任意進制轉換方法(c++)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

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

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

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

    ?C++?new?和?delete?關鍵字詳解

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

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

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

    C++實現(xiàn)LeetCode(150.計算逆波蘭表達式)

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

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

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

    C/C++表格組件Qt?TableWidget應用詳解

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

    C語言運算符與表達式

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

    關于C++復制構造函數的實現(xiàn)講解

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

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

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

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

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

最新評論