= 9) { // Show bit context $offset = $i * 8; echo " Context (bits " . ($offset - 8) . "-" . ($offset + 15) . "):\n"; echo " Our: " . substr($bits, max(0, $offset - 8), 24) . "\n"; $expectedBits = ''; foreach ($expected as $cw) { $expectedBits .= str_pad(decbin($cw), 8, '0', STR_PAD_LEFT); } echo " Expected: " . substr($expectedBits, max(0, $offset - 8), 24) . "\n"; } } // Show what the expected padding should be echo "\n=== Expected Padding Analysis ===\n"; $expectedBits = ''; foreach ($expected as $cw) { $expectedBits .= str_pad(decbin($cw), 8, '0', STR_PAD_LEFT); } // Find where our data ends $dataEnd = 4 + 8 + (11 * 8); // mode + count + data echo "Data ends at bit: {$dataEnd}\n"; echo "Expected bits 0-{$dataEnd}: " . substr($expectedBits, 0, $dataEnd) . "\n"; echo "Our bits 0-{$dataEnd}: " . substr($bits, 0, $dataEnd) . "\n"; $expectedPadding = substr($expectedBits, $dataEnd); $ourPadding = substr($bits, $dataEnd); echo "\nExpected padding: {$expectedPadding}\n"; echo "Our padding: {$ourPadding}\n"; if ($expectedPadding === $ourPadding) { echo "\nāœ… Padding matches!\n"; } else { echo "\nāŒ Padding doesn't match!\n"; echo "First difference at bit " . ($dataEnd + strspn($expectedPadding ^ $ourPadding, "\0")) . "\n"; }