Package and unzip a 64 bit integer

I have the following code:

$packed = pack('i',PHP_INT_MAX); echo unpack('i', $packed)[1]; 

As a result, I get -1

I am using PHP 5.4.6-1ubuntu1.1 (cli) (built: Nov 15 2012 01:18:34) and my PHP_INT_MAx is 9223372036854775807

Is there a way to work with the pack function and 64-bit integers?

+7
source share
1 answer

Save it as two 32Bit instead:

 $value = PHP_INT_MAX; $highMap = 0xffffffff00000000; $lowMap = 0x00000000ffffffff; $higher = ($value & $highMap) >>32; $lower = $value & $lowMap; $packed = pack('NN', $higher, $lower); list($higher, $lower) = array_values(unpack('N2', $packed)); $originalValue = $higher << 32 | $lower; 
+19
source

All Articles