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中测试结果: 把十六进制的数据 转为字符格式显示

猜你喜欢

转载自blog.csdn.net/dianzishi123/article/details/87928492