string to mac

来源:互联网 发布:linux怎么查看版本 编辑:程序博客网 时间:2024/06/16 09:53
const char cSep = '-'; //Bytes separator in MAC address string like 00-aa-bb-cc-dd-ee/*This function accepts MAC address in string format and returns in bytes. it relies on size of byAddress and it must be greater than 6  bytes.If MAC address string is not in valid format, it returns NULL.NOTE: tolower function is used and it is locale dependent.*/unsigned char* ConverMacAddressStringIntoByte(const char *pszMACAddress, unsigned char* pbyAddress){for (int iConunter = 0; iConunter < 6; ++iConunter){unsigned int iNumber = 0;char ch;//Convert letter into lower case.ch = tolower (*pszMACAddress++);if ((ch < '0' || ch > '9') && (ch < 'a' || ch > 'f')){return NULL;}//Convert into number. //       a. If character is digit then ch - '0'//b. else (ch - 'a' + 10) it is done //because addition of 10 takes correct value.iNumber = isdigit (ch) ? (ch - '0') : (ch - 'a' + 10);ch = tolower (*pszMACAddress);if ((iConunter < 5 && ch != cSep) || (iConunter == 5 && ch != '\0' && !isspace (ch))){++pszMACAddress;if ((ch < '0' || ch > '9') && (ch < 'a' || ch > 'f')){return NULL;}iNumber <<= 4;iNumber += isdigit (ch) ? (ch - '0') : (ch - 'a' + 10);ch = *pszMACAddress;if (iConunter < 5 && ch != cSep){return NULL;}}/* Store result.  */pbyAddress[iConunter] = (unsigned char) iNumber;/* Skip cSep.  */++pszMACAddress;}return pbyAddress;}/*This function converts Mac Address in Bytes to String format.It does not validate any string size and pointers.It returns MAC address in string format.*/char *ConvertMacAddressInBytesToString(char *pszMACAddress, unsigned char *pbyMacAddressInBytes){sprintf(pszMACAddress, "%02x%c%02x%c%02x%c%02x%c%02x%c%02x", pbyMacAddressInBytes[0] & 0xff,cSep,pbyMacAddressInBytes[1]& 0xff, cSep,pbyMacAddressInBytes[2]& 0xff, cSep,pbyMacAddressInBytes[3]& 0xff, cSep,pbyMacAddressInBytes[4]& 0xff, cSep,pbyMacAddressInBytes[5]& 0xff);return pszMACAddress;} 


原创粉丝点击