• λ我爱Aspx >> C#.Net >> 急!高手指点:为何在不同的 Linux 服务器上会产生不同的结果?
  • 急!高手指点:为何在不同的 Linux 服务器上会产生不同的结果?

  • :aspxer  Դ:csdn  :2007-6-12 3:44:53  ؼ:
  • 函数如下!不知为何在不同的 Linux 服务器上会产生不同的结果?!

    function encrypt($Str,$sKey)

    {

    $C1 = 55689;

    $C2 = 24553;

    for($i=0; $i< strlen($Str); $i++) {

    $tmpStr = chr(ord(substr($Str,$i,1)) ^ ($sKey >> 8));

    $sKey = ((ord($tmpStr) % 256 + $sKey) * $C1 % 65536 + $C2) % 65536;

    $KeyStr .= $tmpStr;

    }

    $Str = $KeyStr;

    $KeyStr = "";

    for($i=0; $i<strlen($Str); $i++) {

    $j = ord(substr($Str,$i,1));

    $KeyStr .= chr(65 + floor($j / 26)) .chr(65+($j % 26));

    }

    Return $KeyStr;

    }

    第2楼. 由 bigluckyfox 于 2007-4-8 18:41:22 发表

    有什么不同呢?

    第3楼. 由 axaw 于 2007-4-8 20:07:49 发表

    难道是32位机与64位引起的数位偏差?

    第4楼. 由 Fufay 于 2007-4-8 20:38:40 发表

    函数有问题。

    第5楼. 由 yueliangdao0608 于 2007-4-8 23:19:44 发表

    关注...

    第6楼. 由 li1229363 于 2007-4-9 8:39:39 发表

    如果这段程序没有逻辑上的问题,都可以作为php中string类函数的经典例子了!

    本人眼拙,没有看出程序在哪个地方有逻辑错误,也没有看出来究竟是什么东西造成的执行情况不同……

    第7楼. 由 wt9199 于 2007-4-9 10:02:00 发表

    应该是 32位机与64位引起的数位偏差。

    我测试过,在不同平台上产生的浮点位数不同,64位 的比 32位少两位。如果传递的字符串较长,那么返回的结果中仅仅开始几个是相同的,后面的截然不同。

    Ҷƪл˵?
  • һƪ有一个问题,帮忙解决一下,谢谢了
    һƪ高分求助!!txt文件去空格问题!