PHP和C#中左右移位的不同值

问题描述

以下是c#和PHP7中的左移代码

为什么以及如何将 PHP 输出与 C# 输出匹配?

提前致谢。

C#

    var ret = 0xFFFFFFFF;
    var a=ret << 8;
    Console.WriteLine(a);

输出

        4294967040

在哪里

PHP

    $ret = 0xFFFFFFFF;
    $a=$ret << 8;
    echo $a;

输出

       1099511627520

解决方法

不要使用 var 关键字,使用明确的 long 代替它:

long ret = 0xFFFFFFFF;
long a = ret << 8;
Console.WriteLine(a);

var 将使用 32 位整数而不是 64 位整数。