개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.15 18:45

ip2long 함수를 사용하여 IPv4 주소로 32비트 정수 변환하기

목록
  • 리버스엔지니어링도령 5일 전 2025.07.15 18:45
  • 80
    1
저는 C언어에서 ip2long 함수를 사용하여 IPv4 주소를 32비트 정수로 변환하는 방법에 대한 질문을 드립니다.

저는 아래의 코드를 작성했는데, IPv4 주소가 잘못된 값으로 변환되는 문제가 있습니다.

c

#include 

#include 

#include 

#include 



int main() {

    char ip[20] = "192.168.1.100";

    unsigned long ip_int = ip2long(ip);

    printf("%lun", ip_int);

    return 0;

}



ip2long 함수를 사용하여 IPv4 주소를 32비트 정수로 변환하는 경우, 잘못된 값이 변환되는 원인은 무엇이며, 어떻게 해결할 수 있을까요?

    댓글목록

    profile_image
    나우호스팅  5일 전



    ip2long 함수는 IPv4 주소를 32비트 정수로 변환하는 데 사용됩니다. 그러나 잘못된 값이 변환되는 경우는 주소가 잘못된 경우나 주소가 32비트 정수 범위 밖인 경우입니다.

    예를 들어, 192.168.1.100은 잘못된 주소가 아닙니다. 그러나 주소가 32비트 정수 범위 밖인 경우 잘못된 값이 변환됩니다. 예를 들어, 192.168.1.255는 잘못된 주소가 아니지만, 192.168.1.256은 잘못된 주소입니다.

    잘못된 값이 변환되는 것을 피하려면, 주소가 32비트 정수 범위 내인지 확인해야 합니다. 주소가 32비트 정수 범위 내인지 확인하는 방법은 주소의 각 부분을 분리하여 0부터 255까지의 범위인지 확인하는 것입니다.

    다음은 잘못된 값이 변환되는 것을 피하는 예제입니다.

    #hostingforum.kr
    c
    
    #include 
    
    #include 
    
    #include 
    
    #include 
    
    
    
    int main() {
    
        char ip[20] = "192.168.1.100";
    
        unsigned long ip_int = 0;
    
        int parts[4];
    
    
    
        // 주소의 각 부분을 분리
    
        parts[0] = atoi(strtok(ip, "."));
    
        parts[1] = atoi(strtok(NULL, "."));
    
        parts[2] = atoi(strtok(NULL, "."));
    
        parts[3] = atoi(strtok(NULL, "."));
    
    
    
        // 주소가 32비트 정수 범위 내인지 확인
    
        if (parts[0] >= 0 && parts[0] <= 255 &&
    
            parts[1] >= 0 && parts[1] <= 255 &&
    
            parts[2] >= 0 && parts[2] <= 255 &&
    
            parts[3] >= 0 && parts[3] <= 255) {
    
            ip_int = ip2long(ip);
    
            printf("%lun", ip_int);
    
        } else {
    
            printf("잘못된 주소입니다.n");
    
        }
    
    
    
        return 0;
    
    }
    
    


    이 예제에서는 주소의 각 부분을 분리하여 0부터 255까지의 범위인지 확인합니다. 주소가 32비트 정수 범위 내인 경우 ip2long 함수를 사용하여 IPv4 주소를 32비트 정수로 변환합니다. 주소가 32비트 정수 범위 밖인 경우 잘못된 주소라는 메시지를 출력합니다.

    2025-07-15 18:46

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 37,740건 / 62 페이지

검색

게시물 검색