C (数据格式转换)

1. 使用 sprintf() 格式化一个拼接字符串

如: 把十六进制的 "52" ;  转为 十进制为 "82" ;  或者转为字符 "R"

//不要丢掉sprintf中的双引号
unsigned char hour = 64;
unsigned char minutes = 56;
unsigned char seconds = 89;
char timeStr[50] = {0};

//转为 字符串 其中变量转为10进制
sprintf((char *)timeStr,"%d %d %d",hour,minutes,seconds);
printf("十进制格式:%s\r\n",timeStr);


//或者 转为 字符串 其中变量转为字符
sprintf((char *)timeStr,"%c %c %c",hour,minutes,seconds);
printf("字符格式:%s\r\n",timeStr);


//或者 转为 字符串 其中变量转为HEX
sprintf((char *)timeStr,"%X %X %X",hour,minutes,seconds);
printf("十六进制格式:%s\r\n",timeStr);

keil5中测试结果:

 

 

 

2. 利用数组,半个字节转换

如:  这种方法目的是把十六进制的 "0b"   转为字符串 "0b"

//0x00~0x0F转换为ASCII码
unsigned char hextoa(unsigned char dat)
{
	if (dat <= 9)
		return (dat+'0');
	else
		return (dat+('A'-10));
}
 
//0~9,A~F的ASCII码还原成0~15
unsigned char atohex(unsigned char dat)
{
	if (dat <= '9')
		return (dat-'0');
	else
		return (dat-('A'-10));

}

unsigned char str[4] = {0x6a, 0x36, 0xcd, 0xf3};
unsigned char temp[11] = {0};
void function(void)
{
    
    temp[0] = hextoa((str[0]>>4)&0X0F);
    temp[1] = hextoa(str[0]&0X0F);
    temp[2] = ' ';
			
    temp[3] = hextoa((str[1]>>4)&0X0F);
    temp[4] = hextoa(str[1]&0X0F);
    temp[5] = ' ';
		
    temp[6] = hextoa((str[2]>>4)&0X0F);
    temp[7] = hextoa(str[2]&0X0F);
    temp[8] = ' ';
				
    temp[9] = hextoa((str[3]>>4)&0X0F);
    temp[10] = hextoa(str[3]&0X0F);

    printf("转换结果:%s\r\n",temp);
}



keil5中测试结果: 把十六进制的数据 转为字符格式显示

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值