字符串mac转换

自己写了一个把一个16进制的字符串mac地址转换成一个6B的数组格式的mac

#include 
#include 

int mac_trans(const char *smac, unsigned char *dmac) {
	char *tmp = smac;
	char *token, *nptr;
	char *delim = ":.-";
	int i = 0;
	
	token = strtok(tmp, delim);
	while (token != NULL) {
		dmac[i++] = (char)strtol(token, &nptr, 16);
		token = strtok(NULL, delim);
	 }
	 
	return 0;
}

static char *mac_pton(char *strmac, int strlen, char *nmac)
{
    char str[32] = "";
     char *saveptr, *token, *enptr;
     int i = 0;
     
     memcpy(str, strmac, strlen);
    
     for (token = strtok_r(str, ":", &saveptr); token != NULL; token = strtok_r(NULL, ":", &saveptr)) {
         nmac[i++] = (char)strtol(token, &nptr, 16);
     }
     
     return nmac;   
 } 

或者使用sprintf等进行转换

代码不是太精确,仅供参考,有建议的欢迎提出

你可能感兴趣的:(linux应用编程)