av无码国产在线看岛国_日韩精品无码专区国产av影院_在线主播精品国产99热_国模无码一区二区久久_97影院九七理论片男女高清_中文字幕一级毛片_亚洲国产av无码专区亚洲av_成人黄色小说在线观看_H动漫无遮挡在线看中文_国产午夜精品理论片免费视频播放

您好,歡迎訪問(wèn)上?,F(xiàn)易電子元器件有限公司網(wǎng)站!

021-51870898
021-51870898   18019251567
4新聞資訊
您的位置: 首頁(yè) ->  新聞資訊 -> 單片機(jī)

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

文章出處:?jiǎn)纹瑱C(jī) 責(zé)任編輯:上?,F(xiàn)易電子元器件有限公司 發(fā)表時(shí)間:2020-11-10

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

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

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

查找原因:原來(lái)%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è)試

果然輸出正確無(wú)誤!


上海現(xiàn)易電子元器件有限公司 版權(quán)所有 未經(jīng)授權(quán)禁止復(fù)制或鏡像

CopyRight 2020-2025 29711999.com.cn All rights reserved   滬ICP備2020031792號(hào)

電話(huà)

易經(jīng)理

18019251567

微信

易經(jīng)理

易經(jīng)理

頂部

咨詢(xún)