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


    http://www.cnblogs.com/ywangzi/archive/2012/12/12/2815219.html

     

    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;

  • 相关阅读:
    Oracle over函数
    如何用 SQL Tuning Advisor (STA) 优化SQL语句
    Oracle SQL的硬解析和软解析
    Oracle执行计划详解
    正则表达式的语法规则
    ArcGIS Runtime for Android开发教程V2.0(3)基础篇---Hello World Map
    ArcGIS Runtime for Android开发教程V2.0(2)开发环境配置
    ArcGIS Runtime for Android开发教程V2.0(1)基本概念
    在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。
    配置SQL Server 2008服务器
  • 原文地址:https://www.cnblogs.com/zhangzhifeng/p/5944941.html
Copyright © 2020-2023  润新知