十進位制轉任意進製時,將這個十進位制數除以進製數,比如2(也就是十進位制轉二進位制),得到商和乙個從0~1的餘數,然後再以這個商為被除數,除了進製數2,繼續得到商和乙個從0~1的餘數。以此方式不斷相除,直到得到的商為0為止。此時,得到若干個餘數,把這些餘數按從後到先的順序排列起來,那麼這個排列起來的值即為該十進位制轉換成二進位制的值。計算如圖所示:
最後得到的餘數為二進位制的非零的最高位,最先得到的餘數為二進位制的最低位,可知:十進位制數9轉換成二進位制數為1001。
任意進製轉十進位制時,以二進位制數1001為例:該進製的最低位(右一)的值1就表示實際的十進位制值1,次低位(右二)的值0表示進製數2的一次方的0倍即為0,次次低位(右三)的值0表示進製數2的二次方4的0倍即為0,最高位(左一)的值1表示進製數2的三次方8的1倍即為8,以此類推,將每位得到的十進位制數相加得到9,該和即為二進位制數1001對應的十進位制數。計算如圖所示:
以php**為例,實現十進位制與三十六進製制的互相轉換:
1、定義碼表,指定十進位制和三十六進製制的對應碼:
//十進位制與三十六進製制對應的碼表
$dic = array(
0 => '0',
1 => '1',
2 => '2',
3 => '3',
4 => '4',
5 => '5',
6 => '6',
7 => '7',
8 => '8',
9 => '9',
10 => 'a',
11 => 'b',
12 => 'c',
13 => 'd',
14 => 'e',
15 => 'f',
16 => 'g',
17 => 'h',
18 => 'i',
19 => 'j',
20 => 'k',
21 => 'l',
22 => 'm',
23 => 'n',
24 => 'o',
25 => 'p',
26 => 'q',
27 => 'r',
28 => 's',
29 => 't',
30 => 'u',
31 => 'v',
32 => 'w',
33 => 'x',
34 => 'y',
35 => 'z',
);//基數為36
$base = count($dic);
2、定義方法,十進位制轉三十六進製制:
/**
* 十進位制轉指定位數的n進製
* @param int $number 要轉的十進位制數
* @param int $len 轉n進製的位數,不足位數高位補0
* @return bool|string
*/function encode($number, $len) else
}//根據指定的長度在取模結果的右側補0
$codes = array_pad($codes, $len, '0');
$codes = array_reverse($codes);
$code = implode('', $codes);
return $code;}}
3、定義方法,三十六進製制轉十進位制:
/**
* n進製轉十進位制
* @param string $code
* @return bool|int|string
*/function decode($code)
}$number = 0;
$len = strlen($code);
if ($len > 0)
}return $number;
}
將碼表的對應值無規則打亂,只要碼表不被洩露就可以用來作為一種加密方式。 十進位制和任意進製的轉換
s.push 入棧s.top 取棧頂元素 s.pop 出棧s.empty 棧不為空 1.十進位制轉換成八進位制 二進位制 include include include windows.h using namespace std int main while s.empty system pause...
python的十進位制與任意進製的轉換
將任意進製轉換成十進位制 print int 54 8 表示把8進製的54轉換成十進位制數並輸出結果。8可以是2 8,10,16等進製數 將十進位制轉換成任意進製 def f n,x n為待轉換的十進位制數,x為機制,取值為2 16 a 0,1,2,3,4,5,6,7,8,9,a b c d e f...
任意進製轉換十進位制 c語言
也不算是任意進製,最高只能到十六進製制。見諒!如下 include include include define maxsize 100 靜態順序棧儲存的最大空間 const char f 0123456789abcdef 定義乙個全域性常量 方便匯出十進位制以上的不為數字形式的資料的顯示 void...