方法1
#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; }
方法2
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; }