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++;					
			}				
		}				
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值