請問10進制轉36進制 |
答題得分者是:ddy
|
elegant
一般會員 ![]() ![]() 發表:4 回覆:7 積分:2 註冊:2003-11-04 發送簡訊給我 |
|
ddy
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
Delphi 本身沒有提供此函數,可自己寫
function ZexToDec(Value: string; n: Integer = 36): Variant; //任何進制換成10進制 var i, j: Integer; v: Variant; begin v := 0; if n <= 1 then Exit; for i := Length(Value) downto 1 do begin if ord(Value[i]) > ord('9') then j := ord(Value[i]) - 55 else j := strtoint(Value[i]); v := v + j * power1(n, Length(Value) - i); end; ZexToDec := v; end; function power1(x: int64; n: integer): int64; //簡易Power function,為要解決Power 函數溢位問題 var i: integer; m: int64; begin m:=x; if n = 0 then begin result := 1; exit; end; for i := 1 to n - 1 do x := x * m; result := x; end; function Zex(iValue: int64; n: Integer = 36): string; //10進制轉任何進制 var itmp: string; iv: int64; m: Integer; //餘 begin if n <= 1 then Exit; iv := iValue; iValue := iValue div n; m := iv mod n; if iValue div n <= 0 then begin itmp := Map(iValue) + Map(m); result := itmp; Exit; end else begin result := Zex(iValue, n) + Map(m); Exit; end; end; function Map(iValue: Integer): string; begin case iValue of 0..9: result := inttostr(iValue); 10..35: result := chr(iValue + 55); end; end; |
bruce0211
版主 ![]() ![]() ![]() ![]() ![]() 發表:157 回覆:668 積分:279 註冊:2002-06-13 發送簡訊給我 |
|
ddy
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
|
elegant
一般會員 ![]() ![]() 發表:4 回覆:7 積分:2 註冊:2003-11-04 發送簡訊給我 |
|
kanelou
一般會員 ![]() ![]() 發表:1 回覆:14 積分:3 註冊:2003-05-07 發送簡訊給我 |
順帶一提所謂xx進制是按實際習慣應用
十進制是人們一般生活所慣用的(起碼正常人是有十隻手指)
因應電腦中應用0或1作為基本應(例如磁圈方向有正反向)所以用二進制
二進制可以利過and or xor not 進位逸位等電子電路進行加減乘除等基本運算
但是由於2進制看上去比較冗長讀讀一般人將它分成一段讀例如 1001 1101 ....
如果分為二位一段 即00 01 10 11 四進制又過短不及實際使用, 或 8 進制 101 110 ... , 比較多人使用 16 進制, 16進制比較易讀,而且使用16進制在分割和轉換2 進制上非常簡單,看熟了不用計數也可直接轉換
0 0000 1 0001 2 0010 3 0011
4 0100 5 0101
6 0110
7 0111
8 1000 9 1001
A 1010
B 1011
C 1100
D 1101
E 1110
F 1111 例如: 10011101 -> 1001 1101 對表-> 9D 所以現在通常應用的進制是 2 或 16
至於 36或64.... 進制沒有足夠符號表示,純屬玩票吧
|
anderslee
初階會員 ![]() ![]() 發表:2 回覆:32 積分:26 註冊:2002-06-03 發送簡訊給我 |
|
ddy
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
引言:至於 36或64.... 進制沒有足夠符號表示,純屬玩票吧kanelou 兄講到一個重點,就是符號的表示 36進制,剛好有0-9,A-Z 可以搭配 若是要超過36進制,可能除了大小寫字母要分視為不同符號外還得加些無意義的符號來表示其值,此舉無異是給自己找麻煩… |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |