找回密码
 加入
搜索
查看: 6019|回复: 6

[效率算法] 【已解决】求教! PHP代码转成AU3返回值不同

  [复制链接]
发表于 2013-6-7 14:03:53 | 显示全部楼层 |阅读模式
本帖最后由 twnet 于 2013-6-16 18:43 编辑

PHP代码
<?php   
echo getMixString($seed);  

function getMixString($seed) {  
        $seed = 6616;
    $mixed = "";  
    $source = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/\\:._-1234567890";  
    $len = strlen($source);  
    for($i=0;$i< $len;++$i){  
    $seed = ($seed * 211 + 30031) % 65536;  
    $index = ($seed / 65536 * strlen($source));  
    $c = substr($source,$index,1);  
    $mixed .= $c;  
    $source = str_replace($c, "",$source);  
    }  
    return $mixed;  
}  
?>
对PHP不太懂,翻看了W3School教程里关于PHP各函数说明,还特意搭建了PHP环境来测试
返回值如图:


转成AU3后的代码
$sed = 6616
MsgBox('', '', getMixString($sed))

Func getMixString($seed)
                Local $mixed = ''
        Local $source = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/\\:._-1234567890'
        ;Local $index
        Local $len = StringLen($source)
        For $i = 1 To $len-1
                $seed = Mod(($seed * 211 + 30031),65536)
                $index = ($seed / 65536 * StringLen($source))
                $c = StringMid($source, $index, 1)
                $mixed &= $c
        $source = StringReplace($source, $c, '', 0, 1)
        Next
        Return $mixed
EndFunc
返回值如图


AU3也新手啊,看这结果真蛋疼,真不知道问题出在哪了 有帮忙看看的吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2013-6-7 14:49:36 | 显示全部楼层
一步一步 分解

PHP 有些值输出 和 autoit不同
发表于 2013-6-7 17:49:23 | 显示全部楼层
2個地方
1.$source 多了一個 \
2.index += 1
发表于 2013-6-7 17:54:36 | 显示全部楼层
忘了還有個地方要改
For $i = 0 To $len
发表于 2013-6-7 18:10:03 | 显示全部楼层
Duvet 正解,看来php中的第一个\作为转义了,不记在字符串长度之内~
$sed = 6616
MsgBox('', '', getMixString($sed))

Func getMixString($seed)
        Local $mixed = ''
        Local $source = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/\:._-1234567890'
        Local $len = StringLen($source)
        For $i = 1 To $len
                $seed = Mod(($seed * 211 + 30031), 65536)
                $index = ($seed / 65536 * StringLen($source))+1
                $c = StringMid($source, $index, 1)
                $mixed &= $c
                $source = StringReplace($source, $c, '', 0, 1)
        Next
        Return $mixed
EndFunc   ;==>getMixString
 楼主| 发表于 2013-6-7 19:31:23 | 显示全部楼层
真心谢谢几位的热心解答,问题才得以解决。
测试了一番,确实PHP跟AU3有些功能相同的函数输出不一样
发表于 2014-8-27 20:22:24 | 显示全部楼层
AU3有些功能相同的
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-16 14:28 , Processed in 0.077199 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表