成人永久免费网站在线观看,精品一卡2卡三卡4卡,日韩午夜无码精品图区,精品一区二区三人妻视频,精品一区二区三人妻视频

  • 您好,歡迎來到北京創(chuàng)易科技有限公司!
北京創(chuàng)易科技有限公司
當(dāng)前位置: 北京創(chuàng)易科技有限公司 » 單片機(jī)

sprintf在51單片機(jī)中轉(zhuǎn)換字符出錯(cuò)問題解決

分類:?jiǎn)纹瑱C(jī) 發(fā)布:2018年05月14日 22:31 瀏覽:908次 Tag:

sprintf是C語言庫中具有轉(zhuǎn)換數(shù)據(jù)類型的功能函數(shù),出現(xiàn)一種情況,

在51單片機(jī)中,定義unsigned  char   temp;

然后 想用串口直接把temp 以十進(jìn)制數(shù)是、形式打印出來,是先這樣轉(zhuǎn)換的 sprintf((char*)tem,"%d",temp);即先把temp轉(zhuǎn)換成十進(jìn)制數(shù)字符tem,然后再通過串口輸出tem,然而串口輸出的竟然有亂碼,而且和temp的值也不對(duì)應(yīng);

查找原因:原來%d,代表的是將int型數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制字符的作用,既然是int型,那他占用空間為至少2個(gè)字節(jié),那么我們定義的temp僅是unsigned char 占空間一字節(jié),所以函數(shù)在轉(zhuǎn)換時(shí),會(huì)錯(cuò)誤的轉(zhuǎn)換temp空間外的一字節(jié)空間的數(shù)據(jù),這是未知的數(shù)據(jù),所以會(huì)出現(xiàn)打印亂碼情況,那么把unsigned char temp;改為 unsigned int temp 后,再次測(cè)試

果然輸出正確無誤!


相關(guān)文章
 
資訊欄目
最新資訊
資訊排行
 

在線咨詢