August 24, 2018 分类: ASM/C/C++     作者: hoverlees     留言: 发表

为了实现这个功能, 今天写了一个, 在这里记录下来.

typedef unsigned char uint8_t;
typedef unsigned short uint16_t;

static uint8_t is_ip_address(uint8_t* host, uint8_t ipBuf[4]){
    uint8_t* p=host;
    uint8_t fieldIndex=0;
    uint8_t numberNum=0;
    uint16_t fieldValue=0;
    while(*p){
        if(*p>='0' && *p<='9'){
            numberNum++;
            fieldValue*=10;
            fieldValue+=(*p-'0');
            if(fieldValue>255) return 0;
        }
        else if(*p=='.'){
            if(numberNum==0) return 0;
            ipBuf[fieldIndex]=fieldValue;
            fieldIndex++;
            if(fieldIndex>=4) return 0;
            numberNum=fieldValue=0;
        }
        else return 0;
        p++;
    }
    if(fieldIndex!=3 || numberNum==0) return 0;
    ipBuf[3]=fieldValue;
    return 1;
}
我来留个言

您的电子邮箱我一定会保密的哦!

昵称

邮箱

评论内容