Konwerter IP na dziesiętny
Zamień adres IP na postać dziesiętną, szesnastkową, binarną i ósemkową albo wpisz dowolną z tych liczb, by odzyskać IP. Każdy oktet jest narysowany jako 8 bitów z ich wagami, więc możesz prześledzić rachunek.
Rozpoznany zapis z kropkami
| Oktet | 1286432168421 | Hex |
|---|---|---|
| 198 | 11000110 | C6 |
| 128+64+4+2 × 256³ = 3 321 888 768 | ||
| 51 | 00110011 | 33 |
| 32+16+2+1 × 256² = 3 342 336 | ||
| 100 | 01100100 | 64 |
| 64+32+4 × 256 = 25 600 | ||
| 77 | 01001101 | 4D |
| 64+8+4+1 × 1 = 77 | ||
| Razem | ||
| = 3 325 256 781 | ||
Adres IP albo jego liczba dziesiętna, szesnastkowa, binarna lub ósemkowa, by odzyskać IP. Konwersja odbywa się w twojej przeglądarce; nic nie jest wysyłane.
3325256781
Ta sama liczba w kodzie
SELECT INET_ATON('198.51.100.77');3325256781SELECT '198.51.100.77'::inet - '0.0.0.0'::inet;3325256781int(ipaddress.ip_address('198.51.100.77'))3325256781ip2long('198.51.100.77')3325256781- Dziesiętnie z kropkami
- Dziesiętnie
- Szesnastkowo
- Oktety binarnie
- Ósemkowo
- Oktety szesnastkowo
- Oktety ósemkowo
- W przeglądarce (każdy otwiera 198.51.100.77)
- Nazwa zwrotna DNS
- Jako IPv6 (mapowany)
- IPv4 → IPv6
Jak zamienić adres IP na liczbę dziesiętną?
Pomnóż cztery liczby przez 256³, 256², 256 i 1, a potem je zsumuj: 192.168.1.1 to 192 × 16 777 216 + 168 × 65 536 + 1 × 256 + 1 = 3 232 235 777.
Adres IPv4 to jedna liczba 32-bitowa zapisana w czterech 8-bitowych kawałkach, więc postać z kropkami i postać dziesiętna to ta sama wartość. Dokumentacja MySQL podaje jako przykład 10.0.5.9 = 167773449.

Dowolna postać na wejściuZ kropkami, dziesiętnie, szesnastkowo, binarnie, ósemkowo albo jako URL: pole czyta wszystko.Bity i wagiKażda jedynka dodaje swoją wagę: 128 + 64 + 4 + 2 = 198.× 256³, 256², 256, 1Każdy oktet pomnożony przez swoją wagę, potem suma.Każda postać na wyjściuSzesnastkowo, binarnie, ósemkowo i adresy URL akceptowane przez przeglądarki, każde do skopiowania.LiczbaCały adres jako jedna liczba 32-bitowa, gotowa do skopiowania, z rodzajem adresu.Jak zamienić liczbę dziesiętną na adres IP?
Podziel przez 16 777 216, potem resztę przez 65 536, a potem przez 256: trzy ilorazy i ostatnia reszta to cztery liczby, więc 3232235777 to 192.168.1.1.
Wpisz liczbę w konwerter, a zrobi to samo, pokazując też postać szesnastkową, binarną, ósemkową i formy akceptowane przez przeglądarki. Liczby powyżej 4 294 967 295 nie są adresami IPv4; konwerter czyta je jako liczby IPv6 i o tym mówi.
3 232 235 777÷ 16 777 216=192reszta 11 010 30511 010 305÷ 65 536=168reszta 257257÷ 256=1reszta 11÷ 1=1reszta 0192.168.1.1
Jak zamienić adres IP na binarny?
Zapisz każdą z czterech liczb jako 8 bitów z wagami 128, 64, 32, 16, 8, 4, 2 i 1: 192 to 128 + 64, czyli 11000000, a 192.168.1.1 to 11000000.10101000.00000001.00000001.
Idź po wagach od lewej: pisz 1 i odejmuj, gdy waga się mieści, w przeciwnym razie pisz 0. Dla 168: 128 się mieści (zostaje 40), 64 nie, 32 się mieści (zostaje 8), 16 nie, 8 się mieści, więc 10101000. Z powrotem z binarnego dodaj wagi jedynek.
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | ||
|---|---|---|---|---|---|---|---|---|---|
| 192 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 128 + 64 |
| 168 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 128 + 32 + 8 |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
11000000.
Jak zamienić adres IP na hex?
Podziel 8 bitów każdego oktetu na dwie połówki po 4 i zapisz każdą połówkę jako jedną cyfrę szesnastkową: 192 to 1100 0000, czyli C0, więc 192.168.1.1 to 0xC0A80101.
Szesnastkowo IPv6 zapisuje też osadzony adres IPv4: ::ffff:c0a8:101 to 192.168.1.1. Przeglądarki przyjmują liczbę szesnastkową jako host: http://0xC0A80101/ otwiera 192.168.1.1.
11000000C010101000A8000000010100000001010xC0A80101
4 bity = 1 cyfra szesnastkowa
Dlaczego http://3232235777 otwiera 192.168.1.1?
Bo przeglądarki czytają host złożony z samych liczb jako adres IPv4 w dowolnej ze starych form inet_aton, także jako jedną liczbę dziesiętną, a potem ładują adres z kropkami.
Każda część może być dziesiętna (standard URL), szesnastkowa z 0x albo ósemkowa z wiodącym 0, a gdy części jest mniej niż cztery, ostatnia wypełnia pozostałe bajty. Dlatego http://192.168.1/ otwiera 192.168.0.1, a nie 192.168.1.1. ping i curl przyjmują te same formy.
Liczby powyżej 32 bitów, cyfra 8 lub 9 w części zaczynającej się od 0 i piąta część są odrzucane.
| Wpisane w pasek adresu | Otwiera |
|---|---|
http://3232235777/ | 192.168.1.1 |
http://0xC0A80101/ | 192.168.1.1 |
http://0300.0250.1.1/ | 192.168.1.1 |
http://127.1/ | 127.0.0.1 |
http://192.168.1/ | 192.168.0.1 |
http://4294967296/ | Odrzucone |
http://09/ | Odrzucone |
http://192.0.2.1.5/ | Odrzucone |
Dlaczego alternatywne zapisy adresów IP mają znaczenie dla bezpieczeństwa?
Bo filtr, który porównuje adresy jako tekst, można oszukać: 2130706433, 0x7f.1, 127.1 i ::ffff:127.0.0.1 to wszystko 127.0.0.1, więc filtry muszą porównywać wartość liczbową, a nie napis.
OWASP wymienia te kodowania wśród sposobów obejścia zabezpieczeń przed SSRF. Biblioteki miały ten błąd: pakiety npm netmask i ip, ipaddress w Pythonie i pakiet net w Go w którymś momencie błędnie czytały zera wiodące lub alternatywne formy, a potem zostały poprawione.
Parsuj ścisłym parserem, zamień na liczbę, a dopiero potem porównuj zakresy. Blokuj też adresy mapowane z IPv4 z blokowanych zakresów.
deny 127.0.0.1
Porównanie jako tekst
127.0.0.1zablokowane
2130706433przechodzi
0x7f.1przechodzi
127.1przechodzi
::ffff:127.0.0.1przechodzi
Porównanie jako liczba
127.0.0.12130706433 · zablokowane
21307064332130706433 · zablokowane
0x7f.12130706433 · zablokowane
127.12130706433 · zablokowane
::ffff:127.0.0.12130706433 · zablokowane
Jak zamienić adres IPv6 na liczbę dziesiętną?
Tak samo, tylko z ośmioma grupami 16-bitowymi: 2001:db8::1 to 42540766411282592856903984951653826561, liczba mająca do 39 cyfr, która w JavaScripcie wymaga BigInt.
Adresów IPv6 jest 2^128. Liczby w JavaScripcie przechowują liczby całkowite dokładnie tylko do 2^53 − 1, więc zwykła arytmetyka po cichu zaokrągla wartości IPv6. int(ipaddress.ip_address(…)) w Pythonie jest dokładne.
2001:db8::1
42540766411282592856903984951653826561
dokładnie (BigInt)
42540766411282592856903984951653826560
Number(): zaokrąglone powyżej 2^53
Jak zamieniać adresy IP na liczby w kodzie i bazach danych?
Używaj funkcji samej platformy z typem bez znaku: INET_ATON() z MySQL do INT UNSIGNED, odejmowania typu inet w PostgreSQL, int(ipaddress.ip_address(…)) w Pythonie i >>> 0 po przesunięciach w JavaScripcie.
32-bitowa liczba całkowita ze znakiem nie zmieści adresów od 128.0.0.0 w górę: << w JavaScripcie daje -1062731519 dla 192.168.1.1, a ip2long() w PHP daje wynik ujemny w 32-bitowych kompilacjach. Dla IPv6 MySQL używa INET6_ATON() i VARBINARY(16).
› SELECT INET_ATON('192.168.1.1'), INET_NTOA(3232235777); 3232235777 | 192.168.1.1
MySQL 8.4
› SELECT '192.168.1.1'::inet - '0.0.0.0'::inet, '0.0.0.0'::inet + 3232235777; 3232235777 | 192.168.1.1
PostgreSQL 16
› import ipaddress int(ipaddress.ip_address('192.168.1.1')), ipaddress.IPv4Address(3232235777) (3232235777, IPv4Address('192.168.1.1'))
Python ipaddress
› '192.168.1.1'.split('.').reduce((n, o) => (n << 8) | +o, 0) >>> 0 3232235777
JavaScript
› echo ip2long('192.168.1.1'), ' ', long2ip(3232235777); 3232235777 192.168.1.1
PHP 8
Najczęściej zadawane pytania
Ile to jest 192.168.1.1 dziesiętnie?
Jaka jest największa wartość dziesiętna adresu IPv4?
Jak zamienić 3232235777 z powrotem na adres IP?
Co oznacza zero wiodące, takie jak 010, w adresie IP?
Dlaczego 192.168.1 otwiera 192.168.0.1?
Jak ręcznie zamienić adres IP na binarny?
Jak przechowywać adresy IP jako liczby w MySQL?
Dlaczego moja liczba IP jest ujemna w JavaScripcie lub PHP?
Czy adres IPv6 da się zamienić na liczbę dziesiętną?
Czy http://0x7f000001/ to to samo co 127.0.0.1?
Powiązane narzędzia
IPv6 na IPv4
Znajdź adres IPv4 w adresie IPv6: mapowany, NAT64, 6to4, Teredo i ISATAP, bit po bicie
IPv4 na IPv6
Każda postać IPv6 adresu IPv4: mapowana, NAT64 i 6to4, z oznaczeniem, czy w użyciu, czy rzadka
Kompresja IPv6
Skracaj lub rozwijaj adresy IPv6 według RFC 5952 i zobacz, która reguła usunęła każde zero
Jaki Jest Mój IP
Twój publiczny IPv4 i IPv6 naraz, z siecią, lokalizacją i sprawdzeniem VPN
Test IPv6
Sprawdź, czy IPv6 działa, co wybiera przeglądarka i czy strona ma IPv6
Kalkulator podsieci
Sieć, broadcast, dostępne hosty i maski dla każdego bloku IPv4 lub IPv6, a także VLSM, podział i podsieci w chmurze
Odwrotne DNS
Znajdź nazwy hostów powiązane z dowolnym adresem IP przez rekordy PTR
Wyszukiwanie DNS
Wszystkie rekordy DNS prosto z serwerów nazw domeny, obok pamięci podręcznej Google i Cloudflare