• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
 

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;

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;


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Matlab GUI保存图片发布时间:2022-07-18
下一篇:
【matlab】用matlab 保存带标记图像、图片的方法总结 - realkate1发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap