首页 新闻 会员 周边

关于snprintf()函数问题

0
悬赏园豆:20 [待解决问题]

如果USART_RX_BUF[0]里的数据是0xf8,

snprintf(temp, sizeof temp, "%X", USART_RX_BUF[0]);

temp[0]的值为0x46;

temp[1]的值为0x38;

这都没问题,但是如果USART_RX_BUF[0]里的数据是0x00;

就只有temp[0]的值为0x30;而temp[1]的值为0x00;

不知道为什么,怎样才能让temp[0],temp[1]内的值都为0x30呢??

很急急急急急急急急急急!!

在线等

嗯啊的主页 嗯啊 | 初学一级 | 园豆:81
提问于:2015-03-14 19:54
< >
分享
所有回答(2)
0

把源码贴上来,你这问题问的没头没脑的!

TheMapleLeaf | 园豆:97 (初学一级) | 2015-03-14 20:54
 void UART1SendByte(void)
{       
           int a;
           int t;
//        USART_SendData(USART1,SendData);
          for(a=3;a<19;a++)
          {
         //  snprintf(temp, sizeof temp, "%X", USART_RX_BUF[a]);
            snprintf(temp, 3, "%02X", USART_RX_BUF[a]);
//        while(USART_GetFlagStatus(USART1, USART_FLAG_TC) != SET);    
            for(t=0;t<2;t++)
            {
                //u8 data=USART1_Sed_buf[t];
                USART_SendData(USART1, temp[t]);//向串口1发送数据
                while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
            }   
            }
            
} 

 

支持(0) 反对(0) 嗯啊 | 园豆:81 (初学一级) | 2015-03-14 20:56
0

snprintf(temp, sizeof temp, "%02X", USART_RX_BUF[0]);

%02x     格式控制: 以十六进制输出,2为指定的输出字段的宽度.如果位数小于2,则左端补0

LiuKaiFa | 园豆:1491 (小虾三级) | 2015-03-15 13:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册