Имитировать пакет ('J') в php <5.6

Мне понадобится 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.