本程式借助10進製數為中介資料,實現任意進製數之間的相互轉換(2-36進製範圍)
需要注意的是,數值範圍不可超出 long long int 所表示的範圍,即所輸入需要為正數,且要小於 (2^63) - 1 .(64位處理器計算機)
若需要負值資料,只需要處理第一位的符號位即可.
還有一點,本程式的字母表示全部採用了大寫方式,如需要小寫字母形式可自行修改.
其實也簡單,大小寫ascll碼數值相差32,直接加減即可轉換.eg: 'a' - 32 =
'a'.
// 進製轉換.cpp : 此檔案包含 "main" 函式。程式執行將在此處開始並結束。
//#include
"pch.h"
#include
#include
#include
using
namespace std;
class
baseconversion
void
computing()
;int
pickindexnumber
(char ch)
else
} string getresult()
};void baseconversion::
computing()
cout <<
"十進位制數表示結果為:"
<< num << endl;
}else
if(num < to)
else
result = character[num]
+ result;
//num}
}int
main()
return0;
}
滑鼠置於此處可直接預覽結果
測試樣例2
進製轉換問題要靈活運用,很多時候並不需要借助10進製作為中介.
拋磚引玉:
16進製制轉2進製,直接使用四位串流實現快速轉換,即任意乙個16進製制的位上的數值可轉位對應4位二進位制數值,採用「8421」快速轉換.
同理,32進製則使用五位二進位制串流即可,「16,8,4,2,1」.
反過來:
二進位制數轉十六進製制數,可直接採用4位二進位製化1位十六進製制實現快速轉換.
本程式為了便於理解原理和編碼實現,「符合人性思維」,權衡之下才用了十進位制數作為中介物件.
其實是可以嘗試直接轉換的,只是很難直接理解、思維可能會不到位.具體內容下次更新時補充.
最後之所以寫這麼乙個進製轉換問題,是因為自己即將總結密碼編碼學知識了.
先為異或運算(相異為真,c++即1)打個前站,預熱一下.
以上**和文字純屬手工碼字,如有錯誤歡迎指出、以便我改正/改進**.
也可申**入興趣群聊,956349248,各種福利小彩蛋詳見群資料介紹介面.
2020/01/01 22:44
franklin
Python實現任意進製轉換
這段 能夠實現任意進製的資料轉換,並且,超過四位的數字還會適用 進行分割,便於多位資料的閱讀。如果不需要進製轉換,只想每隔四位分割時不用設定inputradix和outputradix。進製格式說明 b 二進位制 o 八進位制 d 十進位制 h 十六進製制 由於format十六進製製用x表示,所以 ...
實現任意進製轉化
問題描述 實現十進位制轉num換成r進製數,num和r從鍵盤讀入 假定num為int且 32767 num 32767,r為int且2 r 16 程式設計可用素材 printf input the num,r printf output n 程式的執行效果應類似地如圖1和圖2所示,圖1中的4095,...
C 實現任意進製的相互轉換
進製轉換是計算機內部時時刻刻都在進行活動,本篇文章也是進製轉換的演算法介紹,不過不同的是我想利用ascll編碼實現2到61之間任意進製的相互轉換,更大進製的表示方法只不過是十六進製制表示方法的延伸 用字母a到z表示整數10到35,字母a到z表示整數36到61。這樣就可以表示2到61之間的任意進製啦,...