实现MAC地址转换成十六进制

来源:互联网 发布:ajax javascript 编辑:程序博客网 时间:2024/05/14 18:35

    实现将mac地址(如:"00:FF:0A:0C:06:03")转换成十六进制存储的00FF0A0C0603

由以下两种方法实现:

方法一:

#include "stdio.h"#include "string.h"  static unsigned char SwitchChar(char chStr){    if (chStr >= '0' && chStr <= '9')    {        return (chStr - '0');    }    else if (chStr >= 'A' && chStr <= 'f')    {        return (chStr - 'A' + 10);    }    else if (chStr >= 'a' && chStr <= 'f')    {        return (chStr - 'a' + 10);    }    else    {        return 0;    }} int main(void){    char achSrc[] = "00:FF:0A:0C:06:03";    unsigned char mac[6] = {0};    char *pchStr = strtok(achSrc, ":");    int  nIdx = 0;    int  nTotal = 0;     while (NULL != pchStr)    {        abyDst[nTotal++] = (SwitchChar(*pchStr) << 4) | SwitchChar(*(pchStr+1));        pchStr = strtok(NULL, ":");    }     printf("Mac is %s,mac is %02x%02x%02x%02x%02x%02x\n",achSrc,mac[0],mac[1],mac[2],mac[3],mac[4],mac[5]);    return 0;}


方法二:

int main(void){    char achSrc[] = "00:FF:0A:0C:06:03";    unsigned char mac[6] = {0};     sscanf(achSrc, "%02x:%02x:%02x:%02x:%02x:%02x", &mac[0], &mac[1], &mac[2], &mac[3], &mac[4], &mac[5]);     printf("Mac is %s,mac is %02x%02x%02x%02x%02x%02x\n",achSrc,mac[0],mac[1],mac[2],mac[3],mac[4],mac[5]);    return 0;}


0 0