3v4l.org

run code in 300+ PHP versions simultaneously
<?php function bytesToBits(string $bytestring) : string { $parts = ''; foreach (str_split($bytestring, 4) as $chunk) { $parts .= str_pad(base_convert(unpack('H*', $chunk)[1], 16, 2), 32, '0', STR_PAD_LEFT); } return $parts; } function bitsToBytes(string $bitstring) : string { $remain = $bitstring % 32; if ($remain !== 0) { $bitstring = str_pad($bitstring, $remain, '0', STR_PAD_LEFT); } $parts = ''; foreach (str_split($bitstring, 32) as $chunk) { $parts .= pack('H*', str_pad(base_convert($chunk, 2, 16), 8, '0', STR_PAD_LEFT)); } return $parts; } for ($i = 0; $i < 100; $i++) { $bytestring_in = hash('sha512', uniqid('', true)); $bits = bytesToBits($bytestring_in); $bytestring_out = bitsToBytes($bits); if ($bytestring_in !== $bytestring_out) { die('Error in functions.'); } } echo 'All ok!' . PHP_EOL;

preferences:
26.9 ms | 402 KiB | 5 Q