Adres IP binarnie, dziesiętnie i hex - jak i po co konwertować
10 lipca 2026 · 4 min czytania · zaktualizowano 29 września 2026
Adres IPv4, np. 192.168.1.10, wygląda na cztery osobne liczby, ale tak naprawdę to jedna 32-bitowa liczba zapisana w wygodniejszej dla ludzi formie. Każda z czterech części, czyli oktet, to 8 bitów, a więc wartość od 0 do 255. Poniżej pokazujemy, jak przeliczyć adres ręcznie i w kodzie oraz kiedy to się przydaje.
Ta sama liczba, różne zapisy
Adres 192.168.1.10 można zapisać na kilka sposobów:
- Dziesiętnie:
3232235786(jedna liczba całkowita). - Szesnastkowo (hex):
0xC0A8010A. - Binarnie:
11000000.10101000.00000001.00001010.
Wszystkie przeliczysz w obie strony w konwerterze IP, także adresy IPv6.
Jak przeliczyć adres ręcznie
Na postać binarną
Każdy oktet zamień osobno na 8 bitów. Kolejne bity od lewej mają wartości 128, 64, 32, 16, 8, 4, 2 i 1. Rozłóż liczbę na sumę tych wartości: na pozycjach wartości, które wchodzą do sumy, wpisz 1, a na pozostałych 0.
- 192 = 128 + 64 →
11000000 - 168 = 128 + 32 + 8 →
10101000 - 1 →
00000001 - 10 = 8 + 2 →
00001010
Cały adres to 11000000.10101000.00000001.00001010. Zera na początku oktetu zostawiamy, bo każdy oktet ma zawsze 8 bitów.
Na jedną liczbę dziesiętną
Pomnóż kolejne oktety przez 256³ (16 777 216), 256² (65 536), 256 i 1, a wyniki dodaj:
192 × 16 777 216 + 168 × 65 536 + 1 × 256 + 10 = 3 232 235 786
Z liczby z powrotem na adres
Dziel liczbę przez 256 i zapisuj reszty. Pierwsza reszta to ostatni oktet:
- 3 232 235 786 ÷ 256 = 12 625 921, reszta 10
- 12 625 921 ÷ 256 = 49 320, reszta 1
- 49 320 ÷ 256 = 192, reszta 168
- Zostaje 192, czyli pierwszy oktet.
Czytając od końca, dostajesz 192.168.1.10.
Na zapis szesnastkowy
Każdy oktet to dokładnie dwie cyfry szesnastkowe: 192 = C0, 168 = A8, 1 = 01, 10 = 0A. Po złożeniu: 0xC0A8010A. W takim zapisie łatwo odczytać oktety bez liczenia, dlatego hex pojawia się w zrzutach pakietów i w kodzie niskopoziomowym.
Jak zrobić to w kodzie
| Język / baza | Adres → liczba | Liczba → adres |
|---|---|---|
| PHP | ip2long('192.168.1.10') | long2ip(3232235786) |
| Python | int(ipaddress.ip_address('192.168.1.10')) | str(ipaddress.ip_address(3232235786)) |
| MySQL | INET_ATON('192.168.1.10') | INET_NTOA(3232235786) |
W Pythonie trzeba najpierw wykonać import ipaddress. Moduł obsługuje też IPv6 i sprawdzanie, czy adres należy do danej podsieci. Dla adresów IPv6 MySQL ma dwie funkcje: INET6_ATON zamienia adres na postać binarną (przechowywaną w kolumnie typu VARBINARY(16)), a INET6_NTOA zamienia ją z powrotem na tekst.
Kiedy to się przydaje?
- Programowanie i bazy danych. Adres jako liczba zajmuje 4 bajty zamiast nawet 15 znaków tekstu, a zakres adresów (np. „od 10.0.0.0 do 10.0.255.255”) sprawdzisz zwykłym porównaniem liczb.
- Zrozumienie masek podsieci. Dopiero w zapisie binarnym widać, jak maska oddziela bity sieci od bitów urządzenia. Opisujemy to w poradniku o maskach i CIDR, a gotowe obliczenia zrobi kalkulator podsieci.
- Nauka sieci. Zamiana adresu na postać binarną to typowe zadanie na zajęciach z sieci komputerowych.
- Analiza logów i ruchu. Część narzędzi i zrzutów pakietów pokazuje adresy w postaci liczby lub hex.
Uwaga na nietypowe zapisy adresu w linkach
Przeglądarki rozumieją adres IP także w postaci jednej liczby albo zapisu szesnastkowego. Link http://3232235786/ otworzy tę samą stronę co http://192.168.1.10/. Oszuści używają takich zapisów, żeby ukryć, dokąd naprawdę prowadzi link, a atakujący - żeby omijać filtry sprawdzające adresy.
Jeśli w linku zamiast nazwy domeny widzisz długą liczbę albo dziwny ciąg cyfr, nie klikaj. Wklej go do konwertera IP i sprawdź, jaki to adres. Inne sygnały ostrzegawcze w wiadomościach opisujemy w poradniku o rozpoznawaniu phishingu.
A co z IPv6?
Adres IPv6 to liczba 128-bitowa, zapisywana od razu szesnastkowo w 8 grupach, np. 2001:db8::1. Zamiana na jedną liczbę dziesiętną jest możliwa, ale rzadko przydatna, bo wynik ma do 39 cyfr. Częściej trzeba adres rozwinąć lub skrócić. Zasady zapisu wyjaśniamy we wpisie IPv4 vs IPv6.