2016-07-25 12 views
0

からPHPにおけるビットシフトはので、私の問題は、私は、エンドポイントの応答から「プロセス」大きな整数にしたことです。これは、ハッシュであり、私は(それはバージョンです:メジャー、マイナー、構築、など)は、このデータを表示するために、いくつかのビットマスクとビットシフトを行うためにきた人間に可読な形で。私は簡単にこの処理行うために数行を書きましたC#のULONG、ビットマスクと[OK]を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はそれの重要な部分をカットfloatように、その大整数(data)を扱うことである(と私はその処理を行うため、すべてのシングルビットが必要)。

 

は、そこで質問です:どのようにすることができますI "ポート" という通常 PHPでのC#コードは?

重要なお知らせ:私はPHPのインストールやmodifiyサーバー アーキテクチャ/コンフィギュレーションにアクセスすることはできません。だから私はより大きな 整数またはプラグインを処理する64ビットに移行することはできません。

答えて

0

PHPのint型のサイズはプラットフォーム依存です。ネイティブの64ビット整数を取得するには、64ビットのハードウェアと64ビットのPHPが必要です。ビットごとの演算子を使用して、32ビット整数から64ビット整数を得ることができます。たとえば:サイトとwordpressの持つ運用サーバーですので、[はい(0xffffffff << 32) | 0xfffffffe

+0

を使用することができますが、私はPHPのインストールにアクセスすることはできません0xfffffffffffffffeを構築します – fratili

関連する問題