3v4l.org

run code in 300+ PHP versions simultaneously
<?php // https://stackoverflow.com/questions/35536141/converting-binary-data-to-ascii-with-php-any-possibility/35536281#35536281 function bin2ascii($input) { $output = ''; for($i=0; $i<strlen($input); $i+=8) { $output .= chr(intval(substr($input, $i, 8), 2)); } return $output; } https://stackoverflow.com/questions/6382738/convert-string-to-binary-then-back-again-using-php/6382880#6382880 function ascii2bin($input) { //return array_reduce(str_split($input), fn ($acc, $i) => $acc .= decbin(ord($i))); return array_reduce(str_split($input), fn ($acc, $i) => $acc .= str_pad(decbin(ord($i)), 8, '0', STR_PAD_LEFT)); } // https://stackoverflow.com/questions/11946696/php-signed-binary-strings/11946971#11946971 function bindec2($bin) { if (strlen($bin) == 64 && $bin[0] == '1') { for ($i = 0; $i < 64; $i++) { $bin[$i] = $bin[$i] == '1' ? '0' : '1'; } return (bindec($bin) + 1) * -1; } return bindec($bin); } $i = -114514; var_dump(decbin($i)); $trimmedPadding = ltrim(decbin($i), $i < 0 ? '1' : '0'); var_dump($trimmedPadding); $signBitsPading = $i < 0 ? str_repeat('1', 8 - strlen($trimmedPadding) % 8) : str_repeat('0', 8 - strlen($trimmedPadding) % 8); var_dump($signBitsPading . $trimmedPadding); var_dump(bin2hex(bin2ascii($signBitsPading . $trimmedPadding))); $o = rtrim(base64_encode(bin2ascii($signBitsPading . $trimmedPadding)), '='); var_dump($o); $d = base64_decode($o); var_dump(bin2hex($d)); $bits = ascii2bin($d); $signBit = $bits[0]; $paddedBits = str_pad($bits, 64, $signBit, STR_PAD_LEFT); $restBits = substr($bits, 1); var_dump($bits); var_dump($signBit); var_dump($restBits); var_dump($paddedBits); var_dump(bindec($paddedBits)); var_dump(intval($paddedBits, 2)); var_dump(bindec2($paddedBits)); $paddedHexs = str_pad($d, 8, $signBit === '0' ? "\x00" : "\xFF", STR_PAD_LEFT); // 保持decbin()输出的大端序octet var_dump(bin2hex($paddedHexs)); var_dump(unpack('q', $paddedHexs)); // signed long long (always 64 bit, machine byte order) var_dump(unpack('Q', $paddedHexs)); // unsigned long long (always 64 bit, machine byte order) var_dump(unpack('J', $paddedHexs)); // unsigned long long (always 64 bit, big endian byte order) var_dump(unpack('P', $paddedHexs)); // unsigned long long (always 64 bit, little endian byte order) $paddedHexs = str_pad(strrev($d), 8, $signBit === '0' ? "\x00" : "\xFF", STR_PAD_RIGHT); // 大端序转小端序octet var_dump(bin2hex($paddedHexs)); var_dump(unpack('q', $paddedHexs)); // signed long long (always 64 bit, machine byte order) var_dump(unpack('Q', $paddedHexs)); // unsigned long long (always 64 bit, machine byte order) var_dump(unpack('J', $paddedHexs)); // unsigned long long (always 64 bit, big endian byte order) var_dump(unpack('P', $paddedHexs)); // unsigned long long (always 64 bit, little endian byte order)

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
8.3.110.0080.00016.75
8.3.100.0110.00016.45
8.3.90.0120.00426.77
8.3.80.0030.00618.55
8.3.70.0070.01516.88
8.3.60.0030.01316.88
8.3.50.0150.00016.82
8.3.40.0100.00320.29
8.3.30.0060.00918.98
8.3.20.0070.00024.18
8.3.10.0030.00624.66
8.3.00.0000.00826.16
8.2.230.0030.00620.94
8.2.220.0070.00324.06
8.2.210.0110.00426.77
8.2.200.0060.00316.88
8.2.190.0120.00316.58
8.2.180.0090.00625.92
8.2.170.0120.00319.21
8.2.160.0090.00622.96
8.2.150.0060.00325.66
8.2.140.0080.00024.66
8.2.130.0080.00026.16
8.2.120.0040.00426.16
8.2.110.0090.00020.35
8.2.100.0140.00017.72
8.2.90.0080.00017.84
8.2.80.0050.00317.50
8.2.70.0060.00317.50
8.2.60.0040.00417.80
8.2.50.0030.00618.07
8.2.40.0000.00821.11
8.2.30.0080.00018.24
8.2.20.0040.00419.35
8.2.10.0070.00417.72
8.2.00.0000.00917.77
8.1.290.0070.00330.84
8.1.280.0130.00625.92
8.1.270.0050.00324.66
8.1.260.0040.00426.35
8.1.250.0040.00428.09
8.1.240.0100.00022.60
8.1.230.0080.00421.01
8.1.220.0050.00317.78
8.1.210.0100.00019.10
8.1.200.0000.00917.48
8.1.190.0040.00417.60
8.1.180.0040.00418.10
8.1.170.0040.00418.63
8.1.160.0040.00418.88
8.1.150.0080.00018.72
8.1.140.0080.00317.38
8.1.130.0150.00417.48
8.1.120.0170.00717.53
8.1.110.0080.01217.52
8.1.100.0170.00617.47
8.1.90.0150.00617.50
8.1.80.0150.00417.54
8.1.70.0160.00417.53
8.1.60.0090.00917.61
8.1.50.0150.00317.52
8.1.40.0030.00717.66
8.1.30.0070.00717.54
8.1.20.0090.00617.59
8.1.10.0140.00717.55
8.1.00.0090.00917.46
8.0.300.0000.00719.96
8.0.290.0000.00716.88
8.0.280.0070.00018.52
8.0.270.0110.00516.84
8.0.260.0130.00416.75
8.0.250.0100.00716.88
8.0.240.0130.00416.80
8.0.230.0170.00316.89
8.0.220.0150.00316.83
8.0.210.0200.00016.68
8.0.200.0100.00516.90
8.0.190.0130.00417.01
8.0.180.0160.00016.87
8.0.170.0110.00416.84
8.0.160.0100.00516.80
8.0.150.0080.00516.74
8.0.140.0150.00416.70
8.0.130.0140.00316.83
8.0.120.0050.00816.75
8.0.110.0070.00716.76
8.0.100.0080.00816.86
8.0.90.0060.01116.83
8.0.80.0090.00316.91
8.0.70.0130.00516.80
8.0.60.0120.00516.83
8.0.50.0070.01016.76
8.0.30.0120.00616.82
8.0.20.0110.00716.90
8.0.10.0000.01516.96

preferences:
29.42 ms | 403 KiB | 5 Q