看懂了个大致的意思
先写一个函数吧,,
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'));}
}
先写一个函数吧,,
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'));}
}
--------------------------------------------------------
function TransChar( $AChar ) { //这个函数没有问题了
$res = ord($AChar);
return $res - (( ($res > 47) and ($res < 58) )?48:55);
}//end function;
{
$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;
}
-----------------------------------------------------
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);
}
------------------------------------------------
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;
8位的字串的加密正常
$zheng = floor($end);
你的这个地方用不到$zheng = floor($end);
因为每个字符都是用八位,所以只要两个0-f来表示
所以一定是偶数