2016-07-25 85 views
0

好,所以我的问题是我必须“进程”从一个端点响应的大整数。这是一个散列,我必须做一些掩码和位移以便以可读的方式查看这些数据(它是一个版本:主要版本,次要版本,内部版本等)。ulong,位于PHP的位掩码和位移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位来处理更大的 整数或安装插件。

回答

0

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

+0

是的但我无法访问PHP安装,因为它是一个包含站点和wordpress的生产服务器 – fratili