全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3442
推到 Plurk!
推到 Facebook!

請問10進制轉36進制

答題得分者是:ddy
elegant
一般會員


發表:4
回覆:7
積分:2
註冊:2003-11-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-05 08:58:45 IP:61.144.xxx.xxx 未訂閱
請問36進制轉10進制 和 10進制轉36進制的 function是什麼?
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-05 09:06:19 IP:61.218.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-05 12:34:14 IP:211.21.xxx.xxx 未訂閱
引言: 請問36進制轉10進制 和 10進制轉36進制的 function是什麼?
回答這個問題之外 我覺得有件事很好笑 從小到大學計算機概論 只聽過電腦會2 進位,8進位,跟16進位 Delphi 憑什麼要有 36進制的 function ?? 因為問的人的口氣好像理所當然要有的樣子....
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-07 09:42:27 IP:61.218.xxx.xxx 未訂閱
bruce0211 兄,果然是愛之深責之切呀 > 已我所知…沒有一種程式語言會提供 src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=8147403&CC=182217">
elegant
一般會員


發表:4
回覆:7
積分:2
註冊:2003-11-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-11-07 17:29:33 IP:61.144.xxx.xxx 未訂閱
ddy 兄,能這樣稱呼你嗎?真的非常非常謝謝你的諒解,我自知自己水平極差,語氣又不好,難怪bruce0211老兄感覺好笑又好氣,不管怎麼說我都得謝謝你們!
kanelou
一般會員


發表:1
回覆:14
積分:3
註冊:2003-05-07

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-11-12 13:17:12 IP:202.175.xxx.xxx 未訂閱
順帶一提所謂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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-11-14 15:46:35 IP:202.64.xxx.xxx 未訂閱
引言: 至於 36或64.... 進制沒有足夠符號表示,純屬玩票吧
我的想法是,如果用數字 0..9 加 A..Z 就剛好是 36 是單字元表示最大的數字 (不用符號) 六個位就可以足夠表示 0- 2,176,782,335
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-11-14 16:01:50 IP:61.218.xxx.xxx 未訂閱
引言:至於 36或64.... 進制沒有足夠符號表示,純屬玩票吧
kanelou 兄講到一個重點,就是符號的表示 36進制,剛好有0-9,A-Z 可以搭配 若是要超過36進制,可能除了大小寫字母要分視為不同符號外還得加些無意義的符號來表示其值,此舉無異是給自己找麻煩… <>< face="Verdana, Arial, Helvetica">引言:所以現在通常應用的進制是 2 或 16 附帶一點,8 進制的觀念,在寫差勤軟體上也常見此類應用 例:1.0 天 =8 hr < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=8147403&CC=182217">
系統時間:2024-04-29 7:01:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!