3v4l.org

run code in 300+ PHP versions simultaneously
<?php define('INT_SIGNED', 1); define('INT_LE', 2); function is32Bit() { $test = unpack('N', "\xFF\xFF\xFF\xFF"); return current($test) === -1; } function unpack_int32($str, $flags = 0) { $length = strlen($str); if ($length < 4) { return false; } else if ($length > 4) { $str = substr($str, 0, 4); } if ($flags & INT_LE) { $str = strrev($str); } $result = unpack('N', $str); $result = current($result); $signBit = (bool) ($result & 0x80000000); $isSigned = (bool) ($flags & INT_SIGNED); $is32bit = is32Bit(); if ($signBit && $isSigned && !$is32bit) { $result = (0x00000000FFFFFFFF << 32) | $result; } else if ($signBit && !$isSigned && $is32bit) { $result = (($result & 0x7FFFFFFF) * 2) + ~$result + 1; } return $result; } function unpack_int64($str, $flags = 0) { $length = strlen($str); if ($length < 8) { return false; } else if ($length > 8) { $str = substr($str, 0, 8); } if ($flags & INT_LE) { $str = strrev($str); } $longs = array_values(unpack('NN', substr($str, 0, 4), substr($str, 4, 4))); $signBit = (bool) ($longs[0] & 0x80000000); if (!is32Bit()) { $result = ($longs[0] << 32) | $longs[1]; if ($signBit) { $result = (($result & 0x7FFFFFFFFFFFFFFF) * 2) + ~$result + 1; } } return $result; } var_dump(unpack_int64("\xFF\xFF\xFF\xFF\x81\x00\x00\x80", INT_SIGNED | INT_LE));
Output for 8.0.0 - 8.0.30, 8.1.0 - 8.1.27, 8.2.0 - 8.2.17, 8.3.0 - 8.3.4
Fatal error: Uncaught TypeError: unpack(): Argument #3 ($offset) must be of type int, string given in /in/tLPpI:49 Stack trace: #0 /in/tLPpI(49): unpack('NN', '\x80\x00\x00\x81', '\xFF\xFF\xFF\xFF') #1 /in/tLPpI(63): unpack_int64('\x80\x00\x00\x81\xFF\xFF\xFF\xFF', 3) #2 {main} thrown in /in/tLPpI on line 49
Process exited with code 255.
Output for 7.4.0 - 7.4.33
Warning: unpack() expects parameter 3 to be int, string given in /in/tLPpI on line 49 Warning: array_values() expects parameter 1 to be array, null given in /in/tLPpI on line 49 Notice: Trying to access array offset on value of type null in /in/tLPpI on line 51 Notice: Trying to access array offset on value of type null in /in/tLPpI on line 54 Notice: Trying to access array offset on value of type null in /in/tLPpI on line 54 int(0)
Output for 7.3.0 - 7.3.33
Warning: unpack() expects parameter 3 to be int, string given in /in/tLPpI on line 49 Warning: array_values() expects parameter 1 to be array, null given in /in/tLPpI on line 49 int(0)
Output for 7.1.0 - 7.1.25, 7.2.0 - 7.2.33
Warning: unpack() expects parameter 3 to be integer, string given in /in/tLPpI on line 49 Warning: array_values() expects parameter 1 to be array, null given in /in/tLPpI on line 49 int(0)
Output for 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.28, 7.0.0 - 7.0.20
Warning: unpack() expects exactly 2 parameters, 3 given in /in/tLPpI on line 49 Warning: array_values() expects parameter 1 to be array, null given in /in/tLPpI on line 49 int(0)
Output for 4.3.2 - 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.10 - 5.2.17
Warning: Wrong parameter count for unpack() in /in/tLPpI on line 49 Warning: array_values(): The argument should be an array in /in/tLPpI on line 49 int(0)
Output for 5.2.1 - 5.2.9
Warning: Wrong parameter count for unpack() in /in/tLPpI on line 49 Warning: array_values(): The argument should be an array in /in/tLPpI on line 49 Notice: Undefined variable: result in /in/tLPpI on line 60 NULL
Output for 4.3.0 - 4.3.1
Warning: Wrong parameter count for unpack() in /in/tLPpI on line 49 Warning: array_values() [http://www.php.net/function.array-values]: The argument should be an array in /in/tLPpI on line 49 int(0)

preferences:
211.29 ms | 401 KiB | 367 Q