Мне понадобится pack('J', $val)
в php 5.5, но 'J' поддерживается только в 5.6.
Как смоделировать его в php-5.5? На самом деле не нужно упаковывать все 64 бита.
Моя попытка кажется неправильной (на Win7 64bit):
pack('J', $val) === pack('N', 0) . pack('N', $val)
Вероятно, есть более разумный способ сделать это, но это работает:
// base_convert() will treat your value as a string here, // converting it from decimal to hexadecimal $hexStringValue = base_convert($your64bitInteger, 10, 16); // Pad with zeros to the left, until pack()'s output length is matched $hexStringValue = str_pad($hexStringValue, 16, '0', STR_PAD_LEFT); // Convert to binary $packed64bitInteger = hex2bin($hexStringValue);
Однако я должен отметить, что PHP 5.5 дошел до EOL в июле 2016 года, и вы все равно должны обновляться до версии 5.6.