实现将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;
}