内存地址显示的字母("DE")这一个字节如何存在字符串里面
unsigned char uc= 0xDE;
char str[3]={0};
如何uc里的内容转换成字母即(读出 "DE "),且赋值给 str,
功能是最后str= "DE ";
sprintf使得str变成了ffffffde
[解决办法]
参考:http://www.360doc.com/showWeb/0/0/365683.aspx
[解决办法]
sprintf()会对传人参数uc进行位扩展到int型,所以转换成0xffffffde,最后用%x显示也就是ffffffde
char hex[16] = { '0 ', '1 ', '2 ', '3 ', '4 ', '5 ', '6 ', '7 ', '8 ', '9 ', 'A ', 'B ', 'C ', 'D ', 'E ', 'F '}
str[1] = hex[(uc&0xf0)> > 4];
str[2] = hex[ux&0x0f];
str[3] = '\0 ';
[解决办法]
void Hex_to_Asi(unsigned char a, char *pc)
{
pc[0] = ((a&0xF0)> > 4) +0x30;
if (pc[0] > 0x39)
pc[0]+=7; //转换高半个字节
pc[1] = (a&0x0F) + 0x30;
if (pc[1] > 0x39)
pc[1]+=7; //转换低半个字节
pc[2]= '\0 ';
}