2016-07-25 95 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