#define MAC_DF "-" //mac地址分隔符
/*!
\brief 将mac字符串转换成6字节unsigned char
\param mac_str mac字符串
\param mac mac缓存数组指针
\return TRUE 转换成功
\return FALSE mac地址非法
*/
uint8_t mac_str_to_byte(char *mac_str, uint8_t *mac)
{
uint8_t byte_count = 0; //mac字节计数
if(mac == NULL)
return FALSE;
if(strlen(mac_str) != 17)
return FALSE;
char *strtmp = strtok(mac_str,MAC_DF); //获取分隔符分隔的第一个字符串
while(strtmp != NULL && byte_count < 6) {
if(strlen(strtmp) != 2) //字符串长度错误
return FALSE;
if((strtmp[0] >= '0' && strtmp[0] <= '9') || (strtmp[0] >= 'a' && strtmp[0] <= 'f') || (strtmp[0] >= 'A' && strtmp[0] <= 'F')){
if((strtmp[1] >= '0' && strtmp[1] <= '9') || (strtmp[1] >= 'a' && strtmp[1] <= 'f') || (strtmp[1] >= 'A' && strtmp[1] <= 'F')) {
sscanf(strtmp, "%02hhx", &mac[byte_count++]);
strtmp = strtok(NULL,MAC_DF); //获取下一个字符串
} else { //解析mac字节错误
return FALSE;
}
} else { //解析mac字节错误
return FALSE;
}
}
if(byte_count != 6) //mac地址长度错误
return FALSE;
return TRUE;
}
mac地址字符串转unsigned char数组
于 2023-08-23 09:25:19 首次发布