/******************
将16进制数组转化为字符串
*******************/
//0x5a '5''a'
char HexToChar(uint8_t hex)
{
char ch=0;
if(hex>=0x0f)
return -1;
if((hex>=0)&&(hex<=0x09)) ch=hex+'0';
else if((hex>=0x0a)&&(hex<=0x0f)) ch=(hex&0x0f)+('a'-0x0a);
return ch;
}
void ArryToString(uint8_t *data,uint8_t data_len,uint8_t* string)
{
uint8_t * p_string=string;
for(uint8_t i=0;i<data_len;i++)
{
*(p_string++)=HexToChar(data[i]>>4);
*(p_string++)=HexToChar(data[i]&0x0f);
}
*p_string='\0';
M_LOG("my ble addr:%s\r\n",string);
}
/******************
将数组字符串转化为16进制数组
*******************/
//'5''a' 0x5a
int8_t CharToHex(char p_data)
{
uint8_t hex=0;
if((p_data>='0')&&(p_data<='9'))
hex=(p_data-'0');
else if((p_data>='a')&&(p_data<='f'))
hex=(p_data-'a')+0x0a;
else if((p_data>='A')&&(p_data<='F'))
hex=(p_data-'A')+0x0a;
else
return -1;
return hex;
}
void StringToArry(char *string,uint8_t string_len,data_t *data)
{
char *p_string=string;
uint8_t *p_data=data->p_data;
if(!(string_len%2))
{
data->data_len=string_len/2;
for(uint8_t i=0;i<data->data_len;i++)
{
int8_t ch=CharToHex(*p_string++);
if(ch!=-1) *p_data=(ch&0x0f)<<4;
else
{
data->p_data=NULL;
data->data_len=0;
return;
}
ch=CharToHex(*p_string++);
if(ch!=-1) *p_data=(ch&0x0f);
else
{
data->p_data=NULL;
data->data_len=0;
return;
}
p_data++;
}
}
}