Php 在不同的系统上使用bindec生成相同的结果

Php 在不同的系统上使用bindec生成相同的结果,php,binary,decimal,Php,Binary,Decimal,我很好奇,在不同的系统上,是否可以用php中的bindec方法生成相同的结果 问题是,当我在Windows7 64位机器上测试时,我的函数(使用bindec方法)工作得很好,但是当我将代码传输到我的web服务器(运行linux)时,我得到了不同的结果。我已经把我的问题缩小到bindec方法,所以我知道是它导致了问题 谢谢, 抢劫 下面是函数。我需要XOR操作符,但这会在我的机器和服务器上生成不同的结果,所以我写了自己的,看看这是否可行 function MyXOR($input, $key){

我很好奇,在不同的系统上,是否可以用php中的bindec方法生成相同的结果

问题是,当我在Windows7 64位机器上测试时,我的函数(使用bindec方法)工作得很好,但是当我将代码传输到我的web服务器(运行linux)时,我得到了不同的结果。我已经把我的问题缩小到bindec方法,所以我知道是它导致了问题

谢谢, 抢劫

下面是函数。我需要XOR操作符,但这会在我的机器和服务器上生成不同的结果,所以我写了自己的,看看这是否可行

function MyXOR($input, $key){
    $bin_data = decbin($input);
    $bin_key = decbin($key);
    $result_string = "";
    $len_data = strlen($bin_data);
    $len_key = strlen($bin_key);
    for($i = 0; $i < $len_data; $i++){
        if($bin_data{$i} == $bin_key{$i % $len_key}){
                $result_string .= 0;
            } else {
                $result_string .= 1;
        }
    }

    return bindec($result_string);
}
函数MyXOR($input,$key){
$bin_data=decbin($input);
$bin_key=decbin($key);
$result_string=“”;
$len_data=strlen($bin_data);
$len_key=strlen($bin_key);
对于($i=0;$i<$len_数据;$i++){
if($bin_data{$i}==$bin_key{$i%$len_key}){
$result_string.=0;
}否则{
$result_string.=1;
}
}
返回bindec($result\u string);
}

请您发布功能代码好吗?
bindec()
没有理由在不同的操作系统上给出不同的结果,它只是数学函数的一种形式,数学在任何地方都是一样的。。。您可能会得到不同结果的唯一原因是其中一个系统正在运行PHP。实际上,
bindec()
在转换大于32位的值时,在32位机器上的工作方式可能不同,因为PHP会将其值转换为
float
。web服务器是32位系统吗?在这种情况下,如果整数太大而不适合整数类型,则可能会得到不同的结果。请参见=>Changelog@Kaivosukeltaja+1很好,虽然这在99.9%的情况下不会产生实际的差异-OP没有指定他的结果之间的差异,所以很难知道问题是什么以及这是否会影响任何东西…我发布了我的函数,我相信我的服务器是32位的。