2021-09-08

5 篇文章 0 订阅
4 篇文章 0 订阅

进制转换

str_to_hex

static int str_to_hex(char *dest,char *src,int src_len)
{
	int count = 0;
	char str[] = "0123456789ABCDEF";
	
	if(!dest || !src){
		printf("dest || src is NULL");
		return -1;
	}
	while('\0' != *src){
		*dest++ = str[*src>>4];
		*dest++ = str[*src & 0x0F];
		src++;
		count++;
	}
	return count;
}

hex_to_str

static int hex_to_str(char *dst,char *src,int src_len)
{
	int count = 0;
	char *dest = dst;
	if(!dest || !src){
		printf("dest || src is NULL");
		return -1;
	}
	while('\0' != *src){
		if(isdigit(*src)){
			*dest = (*src - '0')<<4;
		}else if(isupper(*src)){
			*dest = ((*src - 'A') + 10)<<4;
		}else if(islower(*src)){
			*dest = ((*src - 'a') + 10)<<4;
		}
		src++;
		if(isdigit(*src)){
			*dest |= *src - '0';
		}else if(isupper(*src)){
			*dest |= *src - 'A' + 10;
		}else if(islower(*src)){
			*dest |= *src - 'a' + 10;
		}
		count++;
		src++;
		dest++;

	}
	return count;
}

测试代码

static void print_hex(char *str,int str_len)
{
	int i = 0;
	char buff[1024] = {0};
	for(i = 0; i < str_len;i++){
		sprintf(buff + i * 3,"%02x ",(unsigned char)str[i]);
	}
	PASSION_LOGI("buff: %s",buff);
}

int main(int argc,char *argv[])
{
	int len = 0;
	char str[] = "080027420aa7";
	char result[256] = {0};
	PASSION_LOGI("str : %s",str);
	len = str_to_hex(result,str,strlen(str));
	PASSION_LOGI("result: %s",result);
	memset(result,0x00,sizeof(result));
	len = hex_to_str(result,str,strlen(str));
	print_hex(result,len);
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值