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