字符串解析MAC地址

nt parse_mac_address(const char *mac_str, unsigned char *mac_bytes) {  
    if (mac_str == NULL || mac_bytes == NULL) {  
        return -1; // 输入指针为空  
    }  
    if (mac_str[0] == '\0') 
    {
          return -1; 
    }
  
    const char *token = mac_str;  
    int i = 0;  
  
    while (i < 6 && *token != '\0') {  
        const char *endptr;  
        unsigned long byte = strtoul(token, (char **)&endptr, 16);  
  
        if (endptr == token || *endptr != ':' && *endptr != '\0' || byte > 0xFF) {  
            return -1; // 转换失败或格式错误  
        }  
  
        mac_bytes[i++] = (unsigned char)byte;  
  
        // 跳过冒号(如果存在)并移动到下一个字节  
        if (*endptr == ':') {  
            token = endptr + 1;  
        } else {  
            // 如果不是冒号,则应该是字符串的结尾  
            if (*endptr != '\0') {  
                return -1; // 格式错误  
            }  
            break;  
        }  
    }  
  
    if (i != 6) {  
        return -1; // MAC地址不完整  
    }  
  
    return 0; 
}
int  parse_ip_address(const char* ip_str, unsigned char *ip_bytes) {      

    if( NULL == ip_str || NULL == ip_bytes )
    {
        return -1;
    }
    if (ip_str[0] == '\0') 
    {
          return -1; 
    }

    sscanf(ip_str, "%hhu.%hhu.%hhu.%hhu", &ip_bytes[0],&ip_bytes[1],
                                          &ip_bytes[2],&ip_bytes[3]);   
    return 0;  
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值