3v4l.org

run code in 300+ PHP versions simultaneously
<?php function pack_encode($val) { $str = ''; while ($val > 0) { $str .= chr($val & 0xFF); $val = $val >> 8; } // "/" json-encodes poorly and "=" is padding return str_replace( array('/', '='), array('_', ''), base64_encode($str) ); } function pack_decode($bin) { $str = base64_decode(str_replace('_', '/', $bin)); $val = 0; for ($i=0; $i<strlen($str); $i++) { $val |= (ord($str[$i]) << ($i * 8)); } return $val; } for ($i=0; $i<32; $i++) { $val = 1<<$i; $enc = pack_encode($val); $dec = pack_decode($enc); echo "$val => $enc => $dec\n"; } for ($i=1; $i<1<<32; $i=$i<<1) { $enc = pack_encode($val); $dec = pack_decode($val); echo "$enc $dec $val\n"; }
Output for 4.3.0 - 4.3.11, 4.4.0 - 4.4.9, 5.0.0 - 5.0.5, 5.1.0 - 5.1.6, 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.24 - 5.5.35, 5.6.8 - 5.6.28, 7.0.0 - 7.0.20, 7.1.0 - 7.1.25, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
1 => AQ => 1 2 => Ag => 2 4 => BA => 4 8 => CA => 8 16 => EA => 16 32 => IA => 32 64 => QA => 64 128 => gA => 128 256 => AAE => 256 512 => AAI => 512 1024 => AAQ => 1024 2048 => AAg => 2048 4096 => ABA => 4096 8192 => ACA => 8192 16384 => AEA => 16384 32768 => AIA => 32768 65536 => AAAB => 65536 131072 => AAAC => 131072 262144 => AAAE => 262144 524288 => AAAI => 524288 1048576 => AAAQ => 1048576 2097152 => AAAg => 2097152 4194304 => AABA => 4194304 8388608 => AACA => 8388608 16777216 => AAAAAQ => 16777216 33554432 => AAAAAg => 33554432 67108864 => AAAABA => 67108864 134217728 => AAAACA => 134217728 268435456 => AAAAEA => 268435456 536870912 => AAAAIA => 536870912 1073741824 => AAAAQA => 1073741824 2147483648 => AAAAgA => 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648 AAAAgA 64170581900877531 2147483648

preferences:
274.26 ms | 409 KiB | 327 Q