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

发布于 2024-12-10 06:25:14 字数 728 浏览 0 评论 0原文

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

问题是,当我在 Windows 7 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);
}

I am curious if it is possible to generate the same results with bindec method in php, on different systems.

The thing is, my function(which uses the bindec method) works perfectly when I test on my Windows 7 64 bit machine, but when I transfer the code to my web server(running linux), I get different results. I have narrowed my problem down to the bindec method, so I know that it is causing the problem.

Thanks,
Rob

Here is the function. I was in need of the XOR operator, but that was generating a different result on my machine and my server, so I wrote my own to see if that would work.

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);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文