Odwracanie tablicy bajtów w hex
Założenie: Napiszemy funkcję PHP, która przyjmie wartość hexadecymalną, przekonwertuje ją na binarną reprezentację bajtów, odwróci kolejność tych bajtów i zwróci wynik w postaci hexadecymalnej. To przydatne np. przy obliczaniu CRC, gdzie kolejność bajtów może być istotna.
Krok po kroku:
- Konwersja hex na tablicę bajtów:
function hexToBytes(string $hex): array { $bytes = []; for ($i = 0; $i < strlen($hex); $i += 2) { $bytes[] = hexdec(substr($hex, $i, 2)); } return $bytes; }
Funkcja ta dzieli string hexadecymalny na pary znaków, konwertuje każdą parę na liczbę dziesiętną (używając `hexdec`) i dodaje ją do tablicy.
- Odwrócenie tablicy bajtów:
function reverseBytes(array $bytes): array { return array_reverse($bytes); }
Funkcja `array_reverse` odwraca kolejność elementów w tablicy.
- Konwersja tablicy bajtów na hex:
function bytesToHex(array $bytes): string { $hex = ''; foreach ($bytes as $byte) { $hex .= str_pad(dechex($byte), 2, '0', STR_PAD_LEFT); } return $hex; }
Funkcja ta iteruje po tablicy bajtów, konwertuje każdy bajt na jego reprezentację hexadecymalną (używając `dechex`) i dodaje ją do stringa. `str_pad` zapewnia, że każdy bajt jest reprezentowany przez dwa znaki hex (np. 0A zamiast A).
- Całość:
$hex = "1A2B3C"; $bytes = hexToBytes($hex); $reversedBytes = reverseBytes($bytes); $reversedHex = bytesToHex($reversedBytes); echo "Oryginalny hex: " . $hex . "\n"; echo "Odwrócony hex: " . $reversedHex . "\n";
Ten kod pokazuje, jak użyć tych funkcji razem.
Ten przykład pokazuje podstawy konwersji między reprezentacjami hexadecymalną i binarną w PHP. Zachęcamy do eksperymentowania z różnymi wartościami hex i zgłębiania tematu!