从64位数转换为32位数

Otu*_*uyh 2 php 32bit-64bit

尝试了很多,只是失败..

$x = 76561198005785475;
Run Code Online (Sandbox Code Playgroud)

我想要这个号码,转到这个:

$y = 45519747;
Run Code Online (Sandbox Code Playgroud)

这是它的32位形式.


试着解释更多细节:

http://www.tonymarston.net/php-mysql/converter.php

1)将值76561198005785475放在"十进制(输入)"字段中.2)在"二进制(Base 2)"字段中按"DEC to BIN".3)从右边开始计数32并复制它.4)在"Binary(Base 2)"字段上粘贴32个字符的二进制数.5)按"二进制(Base 2)"字段中的"Bin to Dec"按钮.

好的,现在您可以看到"45519747"号码.

Nie*_*sol 14

试试这个:

$y = $x & 0xffffffff;
Run Code Online (Sandbox Code Playgroud)

这会将您的64位值截断为32位值,但请注意,绝对无法将64位值恢复,这是一种破坏性方法.


小智 5

我尝试了很多解决方案。但是没有人帮我。最后,以下脚本挽救了我的生命。

function intval32bits($value)
{
    $value = ($value & 0xFFFFFFFF);

    if ($value & 0x80000000)
        $value = -((~$value & 0xFFFFFFFF) + 1);

    return $value;
}
Run Code Online (Sandbox Code Playgroud)