delphi类型转换 asci与char

ord(char) = asc
chr(asc) = char
inttohex(int,1) = hex (string)
 
使用AStr[i]取AStr:String中的第i个字符时需要注意的事项:
这里i表示第i个字符,并不是通常的0表示第1个,i表示第i+1个。
 
二位的16进制转换为10进制:
function HexToInt(hex : string):integer;
var x : array [0..1] of integer;
    i : integer;
    s : string;
begin
  for I := 0 to 1 do
  begin
    try
      if i = 0 then
        s := copy(hex,1,1)
      else    
        s := copy(hex,2,1);
      x[i] := StrToInt(s);
    except
      if s = 'A' then x[i] := 10;
      if s = 'B' then x[i] := 11;
      if s = 'C' then x[i] := 12;
      if s = 'D' then x[i] := 13;
      if s = 'E' then x[i] := 14;
      if s = 'F' then x[i] := 15;
    end;
  end;
  Result := x[0] * 16 + x[1];
end;  
 
优化,16 to 10
function HexToInt(Hex : String) : int64;
var AStr, AHex : String;
    HexLen, i, AH : integer;
    Power : integer;
begin
  AHex := AnsiUpperCase(Hex);
  HexLen := Length(AHex);
  Result := 0;
  Power := 1;
  for I := 0 to HexLen - 1 do
  begin
    AStr := Copy(AHex,HexLen - i);    //从后往前取
    AH := Ord(AStr[1]) - 48;
    if (AH >= 17) and (AH <= 22) then AH := AH -7
    else if (AH < 0) or (AH > 22) or ((AH > 9) and (AH < 17)) then AH := null;
    if i <> 0 then Power := Power * 16;
    Result := Result + AH * Power;
  end;
end;
 

 

原文来自: http://blog.chinaunix.net/uid/30148519.html

http://blog.chinaunix.net/uid-30148519-id-4850824.html

posted on 2015-03-01 22:23  python100  阅读(605)  评论(0编辑  收藏  举报

导航