最近因工程项目需要读取模块的MAC地址,该设备上传的字符串中包含MAC地址,但是是用十六进制描述,如何将字符串中的十六进制字符转换成十六进制数呢?
例如:字符串中的MAC地址如下
“FA15BF36987F"
一、编写函数将字符串中的十六进制字符转换成十六进制数
uint8_t ASCII_To_Hex(uint8_t number){if (number >= '0' && number <= '9')return (number - 0x30);else if (number >= 'a' && number <= 'f')return ((number - 'a') + 10);else if (number >= 'A' && number <= 'F')return ((number - 'A') + 10);return (0);}
二、编写解析程序
char string[20] = “FA15BF36987F";uint8_t MAC_Buffer[6];uint8_t i;uint8_t ch1;uint8_t ch2;char *p;p = string;for (i=0;i<6;i++){ch1 = *p++;ch2 = *p++;ch1 = ASCII_To_Hex(ch1);ch2 = ASCII_To_Hex(ch2);MAC_Buffer[i] = (ch1 << 0x04) | ch2;}