ulong,位掩码和 PHP 中的 C# 位移
本文关键字:中的 位移 PHP 掩码 ulong | 更新日期: 2023-09-27 17:58:31
好的,所以我的问题是我必须从端点响应中">处理"一个大整数。这是一个哈希值,我必须做一些位掩码和位移,以便以人类可读的方式查看这些数据(它是一个版本:主要、次要、构建等(。
在 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