본문 바로가기
프로그래밍/C, C++

IP 주소 정수 변환(IP to INT, INT to IP)

by 즉흥 2014. 7. 3.
728x90
반응형

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
long long IPtoINT(char *IP_ADDR){
    long long ret = 0;
    char *oct;
    for (int i = 3; i>=0;i--){
        oct = strtok(IP_ADDR, ".");
        ret += pow(256., i) * atoi(oct);
        IP_ADDR = NULL;
    }
    return ret;
}
int main(){
    char ip_addr[24];
    scanf("%s", &ip_addr);
    printf("%lld",IPtoINT(ip_addr));
    return 0;
}





58.184.70.1 이란 IP 주소가 있으면

58 * 256^3
+
184 * 256^2
+
70 * 256^1
+
1 * 256^0
의 계산 결과가 정수형 IP가 됨.





1
2
3
4
5
6
7
8
9
void print_ip(int ip)
{
    unsigned char bytes[4];
    bytes[0] = ip & 0xFF;
    bytes[1] = (ip >> 8) & 0xFF;
    bytes[2] = (ip >> 16) & 0xFF;
    bytes[3] = (ip >> 24) & 0xFF;
    printf("%d.%d.%d.%d\n", bytes[3], bytes[2], bytes[1], bytes[0]);
}


728x90
반응형

'프로그래밍 > C, C++' 카테고리의 다른 글

padding  (2) 2018.10.17
C++에서 띄어쓰기 포함 한 줄 그대로 받기  (0) 2018.10.14
Visual Studio 64bit inline asm  (0) 2018.08.23
VirtualAllocEx Error 487  (0) 2018.01.25
openssl socket C/C++ example  (0) 2017.10.31
유닉스 crypt 함수  (0) 2017.05.29
printf 덮어 쓰기  (0) 2016.11.09
연산자 오버라이딩, sort, 생성자  (2) 2015.06.07
c++ 연산자 오버로딩  (0) 2014.10.29
C++ mysql 연동  (0) 2014.09.23

댓글