给你提供些才转化函数可以参考。。
{===============================================================} 
{ 函数  : RESULTSTRING = HexToBin(HEXSTRING) 
{ 目的   : 把十六进制字符串转换为二进制字符串   

{===============================================================} 
{ 函数  : RESULTINTEGER = HexCharToInt(HEXCHAR) 
{ 目的   : 转换一个十六进制字符为整数
{===============================================================} 
{ 函数  : RESULTSTRING = HexCharToBin(HEXCHAR) 
{ 目的   : 转换一个十六进制字符为二进制字符串
{===============================================================} 
{ 函数  : RESULTINTEGER = Pow(BASE,POWER) 
{ 目的   : 指数函数
{===============================================================} 
{ 函数  : RESULTINTEGER = BinStrToInt(BINSTRING) 
{ 目的   : 把二进制字符串转换为整数
{===============================================================} 
{ 函数  : RESULTSTRING = DecodeSMS7Bit (PDUSTRING) 
{ 目的   : 解码一个7-bit SMS (GSM 03.38) 为ASCII码 
{===============================================================} 
{ 函数  :  RESULTSTRING = ReverseStr (SOURCESTRING) 
{ 目的   : 反转一个字符串
{===============================================================} 
unit BinHexTools; 
interface function HexToBin(HexNr : string): string; 
function HexCharToInt(HexToken : char):Integer; 
function HexCharToBin(HexToken : char): string; 
function pow(base, power: integer): integer; 
function BinStrToInt(BinStr : string) : integer; 
function DecodeSMS7Bit(PDU : string):string; 
function ReverseStr(SourceStr : string) : string; implementation uses sysutils, dialogs; function HexCharToInt(HexToken : char):Integer; 
begin 
  {if HexToken>#97 then HexToken:=Chr(Ord(HexToken)-32); 
  { use lowercase aswell }   Result:=0;   if (HexToken>#47) and (HexToken<#58) then       { chars 0....9 } 
     Result:=Ord(HexToken)-48 
  else if (HexToken>#64) and (HexToken<#71) then  { chars A....F } 
     Result:=Ord(HexToken)-65 + 10; 
end; function HexCharToBin(HexToken : char): string; 
var DivLeft : integer; 
begin 
    DivLeft:=HexCharToInt(HexToken);   { first HEX->BIN } 
    Result:=''; 
                                       { Use reverse dividing } 
    repeat                             { Trick; divide by 2 } 
      if odd(DivLeft) then             { result = odd ? then bit = 1 } 
        Result:='1'+Result             { result = even ? then bit = 0 } 
      else 
        Result:='0'+Result;       DivLeft:=DivLeft div 2;       { keep dividing till 0 left and length = 4 } 
    until (DivLeft=0) and (length(Result)=4);      { 1 token = nibble = 4 bits } 
end; function HexToBin(HexNr : string): string; 
{ only stringsize is limit of binnr } 
var Counter : integer; 
begin 
  Result:='';   for Counter:=1 to length(HexNr) do 
    Result:=Result+HexCharToBin(HexNr[Counter]); 
end; function pow(base, power: integer): integer; 
var counter : integer; 
begin 
  Result:=1;   for counter:=1 to power do 
    Result:=Result*base; 
end; function BinStrToInt(BinStr : string) : integer; 
var counter : integer; 
begin 
  if length(BinStr)>16 then 
    raise ERangeError.Create(#13+BinStr+#13+ 
            'is not within the valid range of a 16 bit binary.'+#13);   Result:=0;   for counter:=1 to length(BinStr) do 
      if BinStr[Counter]='1' then 
        Result:=Result+pow(2,length(BinStr)-counter); 
end; function DecodeSMS7Bit(PDU : string):string; 
var OctetStr : string; 
    OctetBin : string; 
    Charbin  : string; 
    PrevOctet: string; 
    Counter  : integer; 
    Counter2 : integer; 
begin 
  PrevOctet:=''; 
  Result:='';   for Counter:=1 to length(PDU) do 
    begin 
      if length(PrevOctet)>=7 then     { if 7 Bit overflow on previous } 
        begin 
          if BinStrToInt(PrevOctet)<>0 then 
            Result:=Result+Chr(BinStrToInt(PrevOctet)) 
          else Result:=Result+' ';           PrevOctet:=''; 
        end;       if Odd(Counter) then            { only take two nibbles at a time } 
        begin 
          OctetStr:=Copy(PDU,Counter,2); 
          OctetBin:=HexToBin(OctetStr);           Charbin:=''; 
          for Counter2:=1 to length(PrevOctet) do 
            Charbin:=Charbin+PrevOctet[Counter2];           for Counter2:=1 to 7-length(PrevOctet) do 
            Charbin:=OctetBin[8-Counter2+1]+Charbin;           if BinStrToInt(Charbin)<>0 then Result:=Result+Chr(BinStrToInt(CharBin)) 
            else Result:=Result+' ';           PrevOctet:=Copy(OctetBin,1,length(PrevOctet)+1); 
        end; 
    end; 
end; function ReverseStr(SourceStr : string) : string; 
var Counter : integer; 
begin 
  Result:='';   for Counter:=1 to length(SourceStr) do 
    Result:=SourceStr[Counter]+Result; 
end; end.