# Delphi进制转换（二进制/十进制/十六进制）

Delphi进制转换（二进制/十进制/十六进制）  2009-11-27 11:42:24|  分类： 计算机知识 |  标签： |字号大中小 订阅 .

Delphi进制转换（二进制/十进制/十六进制）

2008-08-29 10:24

function IntToStr(I: integer): string;

begin

Str(I, Result);

end;

function StrToInt(S: string): integer;

begin

Val(S, Result, Result);

end;

function HexToInt(Const HexValue: String) : Integer;

begin

Val('$'+HexValue, Result, Result); end; function IntToHex(Const Value: Integer): string; const HexChars: array[0..15] of Char = '0123456789ABCDEF'; var iTemp: Integer; i: Integer; begin Result := ''; i := 0; while i<4 do begin case i of 0: iTemp := Value shr 24 and$FF;

1: iTemp := Value shr 16 and $FF; 2: iTemp := Value shr 8 and$FF;

3: iTemp := Value and $FF; end; Result := Result + HexChars[iTemp div 16]; Result := Result + HexChars[iTemp mod 16]; Inc(i); end; end; function LowerCase(const S: string): String; begin Result:=CharLower(Pchar(S)); end; function UpperCase(const S: string): String; begin Result:=CharUpper(Pchar(S)); end; 二、函数实现 //十进制 to 二进制 function IntToBin(Value: LongInt;Size: Integer): String; var i: Integer; begin Result:=''; for i:=Size-1 downto 0 do begin if Value and (1 shl i)<>0 then begin Result:=Result+'1'; end else begin Result:=Result+'0'; end; end; end; //二进制 to 十进制 function BintoInt(Value: String): LongInt; var i,Size: Integer; begin Result:=0; Size:=Length(Value); for i:=Size downto 1 do begin if Copy(Value,i,1)='1' then Result:=Result+(1 shl (Size-i)); end; end; function floatBintoInt(Value: String): real; var i,Size: Integer; begin Result:=0; Size:=Length(Value); for i:=Size downto 1 do begin if Copy(Value,i,1)='1' then Result:=Result+1/(1 shl i); end; end; //十六进制 to 二进制 function HextoBinary(Hex:string):string; const BOX: array [0..15] of string = ('0000','0001','0010','0011', '0100','0101','0110','0111', '1000','1001','1010','1011', '1100','1101','1110','1111'); var i:integer; begin for i:=Length(Hex) downto 1 do Result:=BOX[StrToInt('$'+Hex[i])]+Result;

end;

//十六进制 to 十进制 浮点型

function HextoFloat(s:string):real;

var b,temp:string;

e:integer;

f:real;

begin

b:=HextoBinary(s);

temp := copy(b,2,8);

e:=BintoInt(temp)-127;

temp := copy(b,10,23);

f := 1+floatBintoInt(temp);

if(copy(b,1,1)='0')then

result := power(2,e)*f

else

result :=-power(2,e)*f;

end;

posted @ 2012-12-12 19:14  马儿快跑  阅读(13219)  评论(0编辑  收藏  举报