IP 주소 변환기 사용법
위쪽 칸에 IPv4 주소(예: 192.168.0.1)를 입력하면 10진 정수, 16진수, 2진수(옥텟 구분) 형태로 즉시 변환되어 표시됩니다. 반대로 아래쪽 칸에 정수(예: 3232235521)를 입력하면 해당하는 IPv4 주소로 역변환됩니다. 각 결과 줄의 복사 버튼으로 값을 클립보드에 담을 수 있습니다.
IP 주소와 정수 변환 원리
IPv4 주소는 점으로 구분된 4개의 옥텟으로 표시되지만 실제로는 하나의 32비트 숫자입니다. 각 옥텟(0~255)은 8비트를 차지하며, 첫 옥텟이 최상위 바이트가 됩니다. 이를 하나로 이어 붙이면 부호 없는 32비트 정수(0 ~ 4294967295)가 되고, 16진수로는 8자리(예: 0xC0A80001)로 표현됩니다.
- 10진 정수: 데이터베이스 IP 저장·범위 비교·정렬에 유용
- 16진수: 저수준 네트워크 프로그래밍·패킷 분석에서 사용
- 2진수: 서브넷·비트 마스크 이해에 도움
IPv6 표기 변환
세 번째 칸에서는 IPv6 주소를 전체 표기와 축약 표기로 정리해 줍니다. IPv6는 128비트를 16비트씩 여덟 그룹으로 나눠 16진수로 적는데, 같은 주소를 여러 방식으로 쓸 수 있어 비교할 때 혼란이 생깁니다. 예를 들어 2001:db8::1의 전체 표기는 2001:0db8:0000:0000:0000:0000:0000:0001입니다. 축약은 값이 0인 그룹이 두 개 이상 연달아 있을 때 가장 긴 구간 한 곳만 ::로 줄이는 규칙이며, 이 도구도 같은 규칙으로 계산합니다. 로그나 설정 파일에 적힌 주소가 같은 것인지 확인할 때 전체 표기로 맞춰 보면 편합니다.
자주 쓰는 IP 정수 대응표
| IPv4 | 10진 정수 | 비고 |
|---|---|---|
| 0.0.0.0 | 0 | 최솟값 |
| 10.0.0.0 | 167772160 | 사설 대역 시작 |
| 127.0.0.1 | 2130706433 | 루프백 |
| 172.16.0.0 | 2886729728 | 사설 대역 시작 |
| 192.168.0.1 | 3232235521 | 공유기 기본 대역 |
| 255.255.255.255 | 4294967295 | 최댓값 |
정수 변환을 쓰는 곳
- 데이터베이스 저장 — 문자열 대신 정수로 저장하면 공간이 줄고 비교가 빨라집니다. MySQL의
INET_ATON('192.168.0.1')은 3232235521을,INET_NTOA(3232235521)는 원래 주소를 돌려줍니다. - 대역 비교 — 시작 주소와 끝 주소를 정수로 바꿔 두면 특정 IP가 그 대역에 들어가는지 부등호 하나로 판별할 수 있습니다. 접속 차단 목록이나 지역 판별 테이블이 이런 방식으로 동작합니다.
- 정렬 — 문자열로 정렬하면
10.0.0.2가9.0.0.1보다 앞에 오지만, 정수로 정렬하면 실제 순서대로 놓입니다. - 서브넷 이해 — 2진수 표기를 보면 넷마스크가 앞쪽 몇 비트를 고정하는지 눈으로 확인할 수 있습니다.
자주 하는 실수와 주의점
192.168.0.01처럼 옥텟 앞에 0을 붙이면 8진수로 해석될 여지가 있어 이 도구는 유효하지 않은 입력으로 처리합니다.- IPv4 정수는 부호 없는 32비트입니다. 자바의
int처럼 부호 있는 32비트 타입에 담으면 첫 옥텟이 128 이상일 때 음수가 되므로,long이나 부호 없는 타입을 쓰세요. - 0 ~ 4294967295 범위를 벗어난 값은 IPv4로 바꿀 수 없습니다.
- IPv6는 128비트라 일반 정수 타입에 담기지 않습니다. 정수로 다루려면 큰 정수 타입이 필요하며, 이 도구는 IPv6의 정수 변환은 제공하지 않고 표기 변환만 지원합니다.
::는 주소 하나에 한 번만 쓸 수 있습니다. 두 번 이상 나오면 원래 그룹 수를 복원할 수 없어 잘못된 주소입니다.
자주 묻는 질문
IP 주소를 정수로 변환하면 어떤 값이 되나요?
IPv4 주소는 4개의 옥텟(각 0~255)으로 이루어진 32비트 값입니다. 각 옥텟을 8비트씩 이어 붙여 하나의 부호 없는 32비트 정수로 표현합니다. 예를 들어 192.168.0.1은 192×16777216 + 168×65536 + 0×256 + 1 = 3232235521이 됩니다. 데이터베이스 저장이나 대역 비교에 자주 사용됩니다.
IP 정수 값의 범위는 어떻게 되나요?
IPv4는 32비트이므로 정수로 표현하면 0(0.0.0.0)부터 4294967295(255.255.255.255)까지의 부호 없는 값을 가집니다. 이 범위를 벗어나는 정수는 IPv4 주소로 변환할 수 없습니다.
16진수 IP 표기는 어디에 쓰나요?
16진수 표기(예: 0xC0A80001)는 8자리로 IPv4 전체를 간결하게 나타내며, 각 두 자리가 하나의 옥텟에 대응합니다. C++·C 등 저수준 네트워크 프로그래밍이나 패킷 분석 도구에서 IP 주소를 다룰 때 활용됩니다.
선행 0이 붙은 옥텟도 입력할 수 있나요?
아니요. 192.168.0.01처럼 선행 0이 붙은 옥텟은 8진수로 해석될 여지가 있어 모호하므로 이 도구에서는 유효하지 않은 입력으로 처리합니다. 각 옥텟은 0~255 사이의 일반 10진수로 입력하세요.
데이터베이스에서는 어떻게 변환하나요?
MySQL에서는 INET_ATON 함수가 IPv4를 정수로, INET_NTOA 함수가 정수를 IPv4로 되돌립니다. INET_ATON('192.168.0.1')의 결과는 3232235521로 이 도구의 값과 같습니다. 정수로 저장하면 저장 공간이 줄고 대역 비교와 정렬이 빨라집니다.
IPv6 축약 표기는 어떤 규칙인가요?
값이 0인 그룹이 두 개 이상 연달아 있을 때 가장 긴 구간 한 곳만 콜론 두 개로 줄일 수 있습니다. 한 주소에 두 번 이상 쓰면 원래 그룹 수를 복원할 수 없어 잘못된 주소가 됩니다. 이 도구는 전체 표기와 축약 표기를 함께 보여 줍니다.
IPv6도 정수로 바꿀 수 있나요?
IPv6는 128비트라 일반 정수 타입에는 담기지 않고 큰 정수 타입이 필요합니다. 이 도구는 IPv6의 정수 변환은 제공하지 않고 전체 표기와 축약 표기 변환만 지원합니다.