Delphi进制转换(二进制/十进制/十六进制)

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

Delphi进制转换(二进制/十进制/十六进制)

2008-08-29 10:24

 

一、完全用API完成:..uses Windows;

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  马儿快跑  阅读(14018)  评论(0编辑  收藏  举报