0

わかりましたので、私の問題は、エンドポイントの応答から大きな整数を「処理」しなければならないことです。これはハッシュであり、人間が読める方法でこのデータ (バージョン: メジャー、マイナー、ビルドなど) を表示するために、いくつかのビット マスクとビット シフトを行う必要があります。

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そのかなりの部分を切り取ったものとして処理することです (そして、その処理を行うにはすべてのビットが必要です)。

 

問題は、その C# コードを通常のPHPに「移植」するにはどうすればよいかということです。

重要なお知らせ: PHP のインストールにアクセスできないか、サーバーのアーキテクチャ/構成を変更できません。そのため、より大きな整数を処理したり、プラグインをインストールしたりするために 64 ビットに移行することはできません。

4

1 に答える 1

0

PHP int のサイズはプラットフォームに依存します。ネイティブの 64 ビット整数を取得するには、64 ビット ハードウェアと 64 ビット バージョンの PHP が必要です。ビット単位の演算子を使用して、32 ビット整数から 64 ビット整数を取得できます。例:ビルド0xfffffffffffffffeするには、使用できます(0xffffffff << 32) | 0xfffffffe

于 2016-07-25T20:34:51.043 に答える