2016-07-25 17 views
0

Хорошо, поэтому моя проблема в том, что я должен «process» большое целое число от ответа конечной точки. Это hash, и я должен сделать некоторую битовую маску и сдвиги бит, чтобы просмотреть эти данные (это версия: майор, минор, сборка и т. Д.) В удобном для восприятия человеком виде.Улунг, битмаска и сдвиг бит в 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, разрезающее значительную его часть (и мне нужно каждый бит для выполнения этой обработки).

 

Так что вопрос: , как я могу "порт", что C# код в нормальной PHP?

Важное замечание: Я не могу получить доступ к установке PHP или modifiy сервер архитектура/конфигурации. Поэтому я не могу перейти на 64-битный, чтобы обрабатывать большее целое число или устанавливать плагины.

ответ

0

PHP int size зависит от платформы. Вам нужно 64-битное оборудование и 64-разрядная версия PHP, чтобы получить собственное 64-битное целое число. Вы можете получить 64-битное целое число из 32-разрядных целых чисел, используя побитовые операторы. Например: для построения 0xfffffffffffffffe вы можете использовать (0xffffffff << 32) | 0xfffffffe

+0

Да, но я не могу получить доступ к установке PHP, потому что это производственный сервер с сайтами и wordpress – fratili

 Смежные вопросы

  • Нет связанных вопросов^_^