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:

  1. 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.

  2. Odwrócenie tablicy bajtów:
    
    function reverseBytes(array $bytes): array {
      return array_reverse($bytes);
    }
    					

    Funkcja `array_reverse` odwraca kolejność elementów w tablicy.

  3. 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).

  4. 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!

Dodaj komentarz 0

Your email address will not be published. Required fields are marked *