HEX數組與數組字符串之間的相互轉化

/******************
將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++;                    
            }                
        }                
}
 

轉載:https://blog.csdn.net/ty_buyu/article/details/86711883

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章