Pełny adres IPv6 ma 8 hekstetów (grup 16-bitowych) zapisanych w systemie szesnastkowym, rozdzielonych dwukropkami. W pełnej postaci każda grupa ma 4 znaki hex (0–9, A–F), np. "0000", "2F6B", "FE00".
W zapisie skróconym IPv6 stosuje się dwie niezależne reguły:
- Pominięcie wiodących zer w pojedynczym hekstecie – "0000" można zapisać jako "0", a "00AB" jako "AB". Nie wolno jednak usuwać zer w środku lub na końcu hekstetu, więc "FE00" nie może stać się "FE".
- Kompresja kolejnych hekstetów równych "0000" jako "::" – można zastąpić ciąg jednego lub wielu kolejnych hekstetów "0000" podwójnym dwukropkiem. Kluczowe ograniczenie: "::" może wystąpić w adresie tylko raz, aby rozwinięcie było jednoznaczne.
Dla pełnej postaci "22DA:0000:0000:2F6B:0000:0000:FE00:9D50" mamy kolejno hekstety: 22DA, 0000, 0000, 2F6B, 0000, 0000, FE00, 9D50. Najdłuższa sekwencja "0000" ma długość 2 (występuje dwukrotnie), więc można skompresować jedną z nich do "::", a pozostałe "0000" zapisać jako "0".
Odpowiedź "22DA::2F6B:0:0:FE00:9D50" jest poprawna, bo "::" zastępuje dwa hekstety "0000" po "22DA", a następnie dwa kolejne "0000" są zapisane jako "0:0". Hekstety "FE00" i "9D50" pozostają niezmienione (nie wolno ich skracać do "FE" ani "9D5").
Pozostałe propozycje są błędne, bo albo niepoprawnie skracają hekstet "FE00" do "FE" (to zmienia wartość), albo skracają "9D50" do "9D5" (utrata cyfry), albo używają "::" więcej niż raz, co łamie zasadę jednoznaczności zapisu.