How to HEX--> Decimal Integer? ?? |
尚未結案
|
favinc
一般會員 發表:22 回覆:19 積分:8 註冊:2003-03-11 發送簡訊給我 |
|
flyup
資深會員 發表:280 回覆:508 積分:385 註冊:2002-04-15 發送簡訊給我 |
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 發送簡訊給我 |
一、傳入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 發送簡訊給我 |
二、傳入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 發送簡訊給我 |
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'))); // 65535Just for fun |
flyup
資深會員 發表:280 回覆:508 積分:385 註冊:2002-04-15 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
flyup
資深會員 發表:280 回覆:508 積分:385 註冊:2002-04-15 發送簡訊給我 |
|
ddy
站務副站長 發表:262 回覆:2105 積分:1169 註冊:2002-07-13 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |