twnet 发表于 2013-6-7 14:03:53

【已解决】求教! PHP代码转成AU3返回值不同

本帖最后由 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也新手啊,看这结果真蛋疼,真不知道问题出在哪了 有帮忙看看的吗?

pighead456 发表于 2013-6-7 14:49:36

一步一步 分解

PHP 有些值输出 和 autoit不同

Duvet 发表于 2013-6-7 17:49:23

2個地方
1.$source 多了一個 \
2.index += 1

Duvet 发表于 2013-6-7 17:54:36

忘了還有個地方要改
For $i = 0 To $len

haijie1223 发表于 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

twnet 发表于 2013-6-7 19:31:23

真心谢谢几位的热心解答,问题才得以解决。
测试了一番,确实PHP跟AU3有些功能相同的函数输出不一样

xinde30sandywl 发表于 2014-8-27 20:22:24

AU3有些功能相同的
页: [1]
查看完整版本: 【已解决】求教! PHP代码转成AU3返回值不同