ulong,位掩码和 PHP 中的 C# 位移


ulong, bitmask and bit shift in PHP from C#

好的,所以我的问题是我必须从端点响应中">处理"一个大整数。这是一个哈希值,我必须做一些位掩码和位移,以便以人类可读的方式查看这些数据(它是一个版本:主要、次要、构建等(。

C# 中,我轻松地编写了几行来执行此处理

/// Endpoint data
ulong data = 567454918934921216;
ulong major = (version & 0xFFFF000000000000L) >> 48;
ulong minor = (version & 0x0000FFFF00000000L) >> 32;
ulong build = (version & 0x00000000FFFF0000L) >> 16;
ulong revision = version & 0x000000000000FFFFL;
string human = $"{major}.{minor}.{build}.{revision}";
Console.WriteLine(human);
/// Returns '2016.318.1322.0'

但是,这应该是在服务器上运行的后端任务的一部分,所以我必须用PHP编写它。问题是PHP处理那个大整数(data(float切割它的重要部分(我需要每一个位来做这个处理(。

 

所以问题是:如何在普通 PHP 中"移植"该 C# 代码?

重要通知:我无法访问PHP安装或修改服务器 体系结构/配置。所以我不能转移到 64 位来处理更大的 整数或安装插件。

PHP int 大小取决于平台。您需要 64 位硬件和 64 位版本的 PHP 才能获得本机 64 位整数。您可以使用按位运算符从 32 位整数中获取 64 位整数。例如:要构建0xfffffffffffffffe您可以使用(0xffffffff << 32) | 0xfffffffe