IP 주소 10진수 변환기
IP 주소를 10진수, 16진수, 2진수, 8진수로 변환하거나, 이런 숫자를 입력해 IP 주소로 되돌립니다. 각 옥텟을 자릿값이 붙은 8비트로 그려 보여 주므로, IP 변환 계산 과정을 그대로 따라갈 수 있습니다.
읽은 형식: 점으로 구분한 10진수
| 옥텟 | 1286432168421 | 16진수 |
|---|---|---|
| 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 | ||
| 합계 | ||
| = 3,325,256,781 | ||
IP 주소를 입력하거나, 그 10진수·16진수·2진수·8진수 숫자를 입력해 IP 주소로 되돌립니다. 변환은 브라우저에서 이루어지며 아무것도 전송되지 않습니다.
3325256781
같은 숫자를 코드로
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- 점으로 구분한 10진수
- 10진수
- 16진수
- 옥텟별 2진수
- 8진수
- 옥텟별 16진수
- 옥텟별 8진수
- 브라우저에서(모두 198.51.100.77 주소를 엽니다)
- 역방향 DNS 이름
- IPv6로(매핑)
- IPv4 → IPv6
IP 주소를 10진수로 변환하려면 어떻게 하나요?
네 숫자에 각각 256³, 256², 256, 1을 곱해 더합니다: 192.168.1.1은 192 × 16,777,216 + 168 × 65,536 + 1 × 256 + 1 = 3,232,235,777입니다.
IPv4 주소는 8비트씩 네 조각으로 나눠 쓴 32비트 숫자 하나이므로, 점 표기와 10진수 표기는 같은 값입니다. MySQL 문서는 10.0.5.9 = 167773449를 예로 듭니다.

어떤 형식으로든 입력점으로 구분한 10진수, 10진수, 16진수, 2진수, 8진수, URL: 입력란이 모두 읽습니다.비트와 자릿값1인 비트마다 그 자릿값을 더합니다: 128 + 64 + 4 + 2 = 198.× 256³, 256², 256, 1각 옥텟에 가중치를 곱한 뒤 합계를 냅니다.모든 형식으로 출력16진수, 2진수, 8진수와 브라우저가 받아들이는 URL, 각각 복사 가능.숫자주소 전체를 32비트 숫자 하나로 보여 주며, 바로 복사할 수 있고 어떤 종류의 주소인지도 알려 줍니다.10진수를 IP 주소로 변환하려면 어떻게 하나요?
16,777,216으로 나누고, 그 나머지를 65,536으로, 다시 그 나머지를 256으로 나눕니다: 세 몫과 마지막 나머지가 네 숫자이므로, 3232235777은 192.168.1.1입니다.
변환기에 숫자를 입력하면 같은 계산을 하고, 16진수, 2진수, 8진수와 브라우저가 받아들이는 형식도 함께 보여 줍니다. 4,294,967,295보다 큰 숫자는 IPv4 주소가 아닙니다. 변환기는 이런 숫자를 IPv6 숫자로 읽고 그렇다고 알려 줍니다.
3,232,235,777÷ 16,777,216=192나머지 11,010,30511,010,305÷ 65,536=168나머지 257257÷ 256=1나머지 11÷ 1=1나머지 0192.168.1.1
IP 주소를 2진수로 변환하려면 어떻게 하나요?
네 숫자를 각각 자릿값 128, 64, 32, 16, 8, 4, 2, 1의 8비트로 씁니다: 192는 128 + 64이므로 11000000이고, 192.168.1.1은 11000000.10101000.00000001.00000001입니다.
자릿값을 왼쪽부터 차례로 보며, 그 값이 들어가면 1을 쓰고 빼고, 들어가지 않으면 0을 씁니다. 168의 경우: 128은 들어감(40 남음), 64는 안 들어감, 32는 들어감(8 남음), 16은 안 들어감, 8은 들어감, 그래서 10101000입니다. 2진수에서 되돌릴 때는 1인 자리의 자릿값을 더합니다.
| 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.
IP 주소를 16진수로 변환하려면 어떻게 하나요?
각 옥텟의 8비트를 4비트씩 둘로 나눠 각각을 16진수 한 자리로 씁니다(옥텟 하나는 0x00부터 0xff, 즉 10진수 255까지): 192는 1100 0000, 곧 C0이므로 192.168.1.1은 0xC0A80101입니다.
16진수는 IPv6가 안에 든 IPv4 주소를 적는 방식이기도 합니다: ::ffff:c0a8:101은 192.168.1.1입니다. 브라우저는 16진수 숫자를 호스트로 받아들이므로 http://0xC0A80101/은 192.168.1.1을 엽니다.
11000000C010101000A8000000010100000001010xC0A80101
4비트 = 16진수 1자리
http://3232235777이 192.168.1.1을 여는 이유는 무엇인가요?
브라우저는 숫자로만 된 호스트를 옛 inet_aton 형식(10진수 숫자 하나만 쓴 형식 포함) 중 어느 것으로 쓴 IPv4 주소로든 읽은 뒤, 점 표기 주소를 불러오기 때문입니다.
각 부분은 10진수(URL Standard), 0x가 붙은 16진수, 앞자리가 0인 8진수일 수 있으며, 부분이 네 개보다 적으면 마지막 부분이 남은 바이트를 채웁니다. 그래서 http://192.168.1/은 192.168.1.1이 아니라 192.168.0.1을 엽니다. ping과 curl도 같은 형식을 받아들입니다.
32비트를 넘는 숫자, 0으로 시작하는 부분 안의 8이나 9, 다섯 번째 부분은 거부됩니다.
| 주소창에 입력 | 열리는 주소 |
|---|---|
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/ | 거부 |
http://09/ | 거부 |
http://192.0.2.1.5/ | 거부 |
IP 주소의 다른 표기가 보안에 왜 중요한가요?
주소를 텍스트로 비교하는 필터는 속을 수 있기 때문입니다: 2130706433, 0x7f.1, 127.1, ::ffff:127.0.0.1은 모두 127.0.0.1이므로, 필터는 문자열이 아니라 숫자 값을 비교해야 합니다.
OWASP는 이런 인코딩을 SSRF 방어를 우회하는 방법으로 꼽습니다. 실제로 이 버그가 들어간 채 배포된 라이브러리도 있습니다: npm 패키지 netmask와 ip, Python의 ipaddress, Go의 net 패키지는 모두 한때 앞자리 0이나 다른 표기를 잘못 읽었고, 이후 수정되었습니다.
엄격한 파서로 파싱하고, 숫자로 바꾼 다음, 범위를 비교하세요. 차단한 범위의 IPv4 매핑 주소도 함께 차단하세요.
deny 127.0.0.1
문자열로 비교
127.0.0.1차단됨
2130706433통과됨
0x7f.1통과됨
127.1통과됨
::ffff:127.0.0.1통과됨
숫자로 비교
127.0.0.12130706433 · 차단됨
21307064332130706433 · 차단됨
0x7f.12130706433 · 차단됨
127.12130706433 · 차단됨
::ffff:127.0.0.12130706433 · 차단됨
IPv6 주소를 10진수로 변환하려면 어떻게 하나요?
16비트 그룹 여덟 개로 같은 방법을 씁니다: 2001:db8::1은 42540766411282592856903984951653826561이며, 최대 39자리가 되는 숫자라 JavaScript에서는 BigInt가 필요합니다.
IPv6 주소는 2^128개입니다. JavaScript 숫자는 2^53 − 1까지만 정수를 정확히 담으므로, 일반 산술은 IPv6 값을 소리 없이 반올림합니다. Python의 int(ipaddress.ip_address(…))는 정확합니다.
2001:db8::1
42540766411282592856903984951653826561
정확한 값(BigInt)
42540766411282592856903984951653826560
Number(): 2^53 이후 반올림
코드와 데이터베이스에서 IP 주소를 숫자로 바꾸려면 어떻게 하나요?
플랫폼의 자체 함수를 부호 없는 타입과 함께 쓰세요: MySQL의 INET_ATON()을 INT UNSIGNED에, PostgreSQL의 inet 뺄셈, Python의 int(ipaddress.ip_address(…)), JavaScript에서는 시프트 뒤에 >>> 0입니다.
부호 있는 32비트 정수는 128.0.0.0 이상의 주소를 담을 수 없습니다: JavaScript의 <<는 192.168.1.1에 대해 -1062731519를 내고, PHP의 ip2long()은 32비트 빌드에서 음수가 됩니다. IPv6에는 MySQL에서 INET6_ATON()과 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
자주 묻는 질문
192.168.1.1은 10진수로 얼마인가요?
IPv4 주소의 가장 큰 10진수 값은 얼마인가요?
3232235777을 IP 주소로 되돌리려면 어떻게 하나요?
IP 주소에서 010 같은 앞자리 0은 무슨 뜻인가요?
192.168.1이 192.168.0.1을 여는 이유는 무엇인가요?
IP 주소를 손으로 2진수로 바꾸려면 어떻게 하나요?
MySQL에서 IP 주소를 숫자로 저장하려면 어떻게 하나요?
JavaScript나 PHP에서 IP 숫자가 음수로 나오는 이유는 무엇인가요?
IPv6 주소도 10진수로 변환할 수 있나요?
http://0x7f000001/은 127.0.0.1과 같나요?
부족한 점이 있습니까?기능 또는 새 도구 제안하기
관련 도구
IPv6에서 IPv4로
IPv6 속 IPv4 추출: 매핑·NAT64·6to4·Teredo·ISATAP, 비트 단위로
IPv4에서 IPv6로
IPv4 주소의 모든 IPv6 형식: 매핑, NAT64, 6to4와 각 형식의 사용 여부
IPv6 압축
RFC 5952 방식의 IPv6 주소 압축·확장, 각 0을 지운 규칙까지 표시
내 IP 주소 확인
공인 IP의 IPv4와 IPv6를 한 번에 확인하고 네트워크, 위치, VPN 여부까지 확인
IPv6 테스트
IPv6 작동 여부, 브라우저가 고르는 주소 체계, 사이트의 IPv6 지원을 확인합니다
서브넷 계산기
IPv4·IPv6 블록의 네트워크, 브로드캐스트, 사용 가능한 호스트, 마스크 계산과 VLSM, 분할, 클라우드 서브넷
역방향 DNS 조회
PTR 레코드로 IP 주소에 연결된 호스트 이름 검색
DNS 조회
도메인 자체 네임서버의 모든 DNS 레코드를 Google·Cloudflare 캐시와 나란히 확인