看懂了个大致的意思
先写一个函数吧,,
TransChar(AChar: Char): Integer;
Ord()函数可以把字符转换为对应的数值
php中有一样的函数,
所以可以这样写
  function compare0_9($j) {
  for($i=0;$i<=9;$i++) {
   if(strcmp($i,$j)==0)
    return true;
    break;
   }
    return false;
  } 
  function TransChar($AChar)  {
  if compare0_9($AChar)
   { return (Ord(AChar)-Ord('0')); }
  else
   { return (10 + Ord(AChar) - Ord('A'));}
  }

解决方案 »

  1.   

    楼上的老兄,我自己写只用了两行代码!
    --------------------------------------------------------
    function TransChar( $AChar ) {  //这个函数没有问题了
        $res = ord($AChar);
        return $res - (( ($res > 47) and ($res < 58) )?48:55);
    }//end function;
      

  2.   

    function strtohex($str)
    {
    $nstr="";
    for($i=0;$i<(strlen($str));$i=$i+1)
    {
    $nstr.=dechex(ord(substr($str,$i,1)));
    }
    return $nstr;
    }
    function hextostr($str)
    {
    $nstr="";
    for($i=0;$i<strlen($str);$i=$i+2)
    {
    $nstr.=chr(hexdec(substr($str,$i,2)));
    }
    return $nstr;
    }
      

  3.   

    楼上老兄,你的程序会少0,看我的,英雄所见略同
    -----------------------------------------------------
    function StrToHex( $AStr ) {    //这个函数完成
        $Result = "";
        for ($i=0;$i < strlen($AStr);$i++) {
            $tmp = DecHex(ord(substr($AStr, $i, 1)));
            $Result .= ((strlen($tmp)==1)?"0":"") . $tmp;
        }
        return str_replace(" ", "0", $Result);
    }
      

  4.   

    可是你的HexToStr还有问题!下面的是我的
    ------------------------------------------------
    function HexToStr( $AStr ) {     //这个函数完成
        $Result = "";
        $end = strlen($Astr)/2;
        $zheng = floor($end);
        if (($end - $zheng) > 0) {
            $ee = $zheng;
        }else{
            $ee = $end;
        }
        for ($i=0;$i< $ee;$i++) {
            $CharValue = TransChar(substr($AStr, 2*$i-1, 1))*16 + TransChar(substr($AStr, 2*$i, 1));
            $Result .= chr($CharValue);
        }//end for;
        return $Result;
    }//end function;
      

  5.   

    我的程序加密出来的东西,和delphi不太一样!我只能保证少于
    8位的字串的加密正常
      

  6.   

    $end = strlen($Astr)/2;
        $zheng = floor($end);
    你的这个地方用不到$zheng = floor($end);
    因为每个字符都是用八位,所以只要两个0-f来表示
    所以一定是偶数