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

How to HEX--> Decimal Integer? ??

尚未結案
favinc
一般會員


發表:22
回覆:19
積分:8
註冊:2003-03-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-19 19:53:33 IP:218.19.xxx.xxx 未訂閱
How to HEX--> Decimal Integer? 兵临城下,快活如故。
------
兵临城下,快活如故。
flyup
資深會員


發表:280
回覆:508
積分:385
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-19 20:14:37 IP:61.216.xxx.xxx 未訂閱
This algorithm shows a converting hexadecimal value to the decimal value.      function HexToDec(Str: string): Integer; var i, M: Integer; begin Result:=0; M:=1; Str:=AnsiUpperCase(Str); for i:=Length(Str) downto 1 do begin case Str[i] of '1'..'9': Result:=Result (Ord(Str[i])-Ord('0'))*M; 'A'..'F': Result:=Result (Ord(Str[i])-Ord('A') 10)*M; end; M:=M shl 4; end; end; procedure TForm1.Button1Click(Sender: TObject); begin if Edit1.Text<>'' then Label2.Caption:=IntToStr(HexToDec(Edit1.Text)); end;
ddy
站務副站長


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-19 20:31:14 IP:61.59.xxx.xxx 未訂閱
一、傳入16進制(String 型態)
function HexToDec(hex:string):integer;
begin
    result:=strtoint(hex);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
    self.Caption :=inttostr(hextodec('$FFFF'));
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
    self.Caption :=inttostr(hextodec('$' + HexVarible ));
end;
發表人 - ddy 於 2003/03/19 20:44:52
ddy
站務副站長


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-19 20:35:53 IP:61.59.xxx.xxx 未訂閱
二、傳入16進制(integer 型態)
function HexToDec(hex:integer):integer;
begin
    result:=strtoint(inttostr(hex));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
    self.Caption :=inttostr(HexToDec($FFFF));
end;
ps:hex 本來就是integer,只是表示法不同 發表人 - ddy 於 2003/03/19 20:46:09
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-19 20:35:59 IP:218.16.xxx.xxx 未訂閱
ASM 版 (from KOL - http://bonanzas.rinet.ru/)
procedure EAX2PChar;
asm
        TEST     EAX, EAX
        JNZ      @@exit
        MOV      EAX, offset['']
@@exit:
end;    function Hex2Int( const Value : String) : Integer;
asm
        CALL     EAX2PChar
        PUSH     ESI
        XCHG     ESI, EAX
        XOR      EDX, EDX
        TEST     ESI, ESI
        JE       @@exit
        LODSB
        {$IFDEF PARANOIA}
        DB $3C, '$'
        {$ELSE}
        CMP      AL, '$'
        {$ENDIF}
        JNE      @@1
@@0:    LODSB
@@1:    TEST     AL, AL
        JE       @@exit
        {$IFDEF PARANOIA}
        DB $2C, '0'
        {$ELSE}
        SUB      AL, '0'
        {$ENDIF}
        {$IFDEF PARANOIA}
        DB $3C, 9
        {$ELSE}
        CMP      AL, '9' - '0'
        {$ENDIF}
        JBE      @@3            {$IFDEF PARANOIA}
        DB $2C, $11
        {$ELSE}
        SUB      AL, 'A' - '0'
        {$ENDIF}
        {$IFDEF PARANOIA}
        DB $3C, 5
        {$ELSE}
        CMP      AL, 'F' - 'A'
        {$ENDIF}
        JBE      @@2            {$IFDEF PARANOIA}
        DB $2C, 32
        {$ELSE}
        SUB      AL, 32
        {$ENDIF}
        {$IFDEF PARANOIA}
        DB $3C, 5
        {$ELSE}
        CMP      AL, 'F' - 'A'
        {$ENDIF}
        JA       @@exit
@@2:
        {$IFDEF PARANOIA}
        DB $04, 0Ah
        {$ELSE}
        ADD      AL, 0Ah
        {$ENDIF}
@@3:
        SHL      EDX, 4
        ADD      DL, AL
        JMP      @@0    @@exit: XCHG     EAX, EDX
        POP      ESI
end;    ShowMessage(IntToStr(Hex2Int('FFFF'))); // 65535
Just for fun
flyup
資深會員


發表:280
回覆:508
積分:385
註冊:2002-04-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-19 20:43:27 IP:61.216.xxx.xxx 未訂閱
樓上兩位好厲害!程式好.....短喔 由此可證..我還在學delphi怎麼爬?..嘿嘿    
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-03-19 20:50:17 IP:218.16.xxx.xxx 未訂閱
ddy 版主己經特意將它變長了... 最短的就是直接 StrToInt('$' HexVarible ); 忘記了 StrToInt 也可將 Hex 轉 Int... 雖說上面 ASM 版本的理應比 StrToInt 快一丁點,但也實在是脫褲子放屁了。
flyup
資深會員


發表:280
回覆:508
積分:385
註冊:2002-04-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-03-19 20:57:37 IP:61.216.xxx.xxx 未訂閱
引言: ddy 版主己經特意將它變長了... 最短的就是直接 StrToInt('$' HexVarible ); 忘記了 StrToInt 也可將 Hex 轉 Int... 雖說上面 ASM 版本的理應比 StrToInt 快一丁點,但也實在是脫褲子放屁了。
謝謝Justmade 提醒!~~ < src="http://spc.tn.edu.tw/k032/images/leaf[1].gif">
ddy
站務副站長


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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-03-19 21:01:55 IP:61.59.xxx.xxx 未訂閱
flyup 客氣了 hex 本來就是integer ,型態表示不同罷了 一起爬吧 ^^ < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=8147403&CC=182217">
系統時間:2024-11-22 22:50:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!