實現任意進製(2 32)轉換

2021-10-01 20:51:24 字數 1573 閱讀 1377

本程式借助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之間的任意進製啦,...