欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2799|回復: 15
收起左側

關于C語言將數組轉換成字符串的方法

[復制鏈接]
ID:731755 發表于 2023-4-20 22:44 來自觸屏版 | 顯示全部樓層 |閱讀模式
你們好,各位,前段時間研究藍牙模塊,現在終于有點眉目了。由于C語言沒有學好,目前有個問題還是問一下大家,將藍牙模塊接收到的數組轉換成字符串在oled屏幕上顯示。網上雖然有這樣的資料,寫的不清不楚或者不是C語言用的,不知道各位如何解決這個問題的。有介紹這方面的資料也可以的。
回復

使用道具 舉報

ID:883242 發表于 2023-4-20 23:22 | 顯示全部樓層
你先要舉個栗子吧,數組具體數字是什么,你打算轉換成什么字符串?
回復

使用道具 舉報

ID:401564 發表于 2023-4-21 00:41 | 顯示全部樓層
一般入門的都會用STC單片機
如果是用STC的話,就用程序空間大點的,成本并不重要,能學到東西就行
用sprintf函數可以轉換成ASCII,雖然會占用1K左右的程序空間,但這函數真是好用,特別是對于浮點型數據,有時候前面有負號,有時候是1.01,有時候是1.1234這種類型的數據,處理起來很方便
對于這類功能,最好不要去直接復制別人的代碼
先去認真的看一下OLED的數據手冊,要知道怎么控制OLED,然后自己寫一個簡單的顯示函數,哪怕是只能顯示一個字母"A",那都算是進步了
然后再去查查我說的這個函數是怎么用的,再一次一次的調試代碼,這個過程就是你學習C語言的過程
我當初也是千百次燒錄驗證走過來的,從中也算是學到不少的知識

評分

參與人數 1黑幣 +11 收起 理由
13872888583 + 11

查看全部評分

回復

使用道具 舉報

ID:879348 發表于 2023-4-21 08:00 | 顯示全部樓層
sprintf函數非常強大

評分

參與人數 1黑幣 +5 收起 理由
13872888583 + 5

查看全部評分

回復

使用道具 舉報

ID:883242 發表于 2023-4-21 09:22 | 顯示全部樓層
wufa1986 發表于 2023-4-21 08:00
sprintf函數非常強大

sprintf異常耗費資源,千萬別用。

評分

參與人數 1黑幣 +5 收起 理由
13872888583 + 5

查看全部評分

回復

使用道具 舉報

ID:731755 發表于 2023-4-21 09:24 | 顯示全部樓層
Hephaestus 發表于 2023-4-20 23:22
你先要舉個栗子吧,數組具體數字是什么,你打算轉換成什么字符串?

你好,老師,我直接說問題吧,我用手機藍牙助手發送11110d0a,反正這之類的十六進制的,串口打印是空白,不過顯示的位數是2位,這個是對的,我想看看在OLED上顯示看看顯示什么,  我之前是轉換成整型數字,顯示的數字有點問題,所以讓它顯示字符串,不過后期想做一個藍牙小車,
回復

使用道具 舉報

ID:731755 發表于 2023-4-21 09:32 | 顯示全部樓層
Y_G_G 發表于 2023-4-21 00:41
一般入門的都會用STC單片機
如果是用STC的話,就用程序空間大點的,成本并不重要,能學到東西就行
用sprintf ...

謝謝,這個函數以前在浮點數顯示的時候用過,感覺挺方便的,那我看一下這個函數
回復

使用道具 舉報

ID:609503 發表于 2023-4-21 09:37 | 顯示全部樓層
0x11110d0a,直接用printf()轉換格式成ASCII

評分

參與人數 1黑幣 +5 收起 理由
13872888583 + 5

查看全部評分

回復

使用道具 舉報

ID:69038 發表于 2023-4-21 09:47 | 顯示全部樓層
本帖最后由 zhuls 于 2023-4-21 09:49 編輯
13872888583 發表于 2023-4-21 09:24
你好,老師,我直接說問題吧,我用手機藍牙助手發送11110d0a,反正這之類的十六進制的,串口打印是空白, ...

沒理解錯的話,你收到的是0x01,0x23,0x45,0x66,0x78,0x09這樣的數據,你要顯示的是012345667809..。
如果是這樣,壇里有例子。。你搜一下

評分

參與人數 1黑幣 +5 收起 理由
13872888583 + 5

查看全部評分

回復

使用道具 舉報

ID:161164 發表于 2023-4-21 11:17 | 顯示全部樓層
藍牙助手通常有Hex模式和文字模式
Hex模式發11110d0a, 單片機收到0x11,0x11,0x0d,0x0a
文字模式發11110d0a,單片機收到經ASCII轉換的數值0x31,0x31,0x31,0x30,0x64,0x30,0x61
以下是ASCII表
ASCII Table.jpg
可以看到0x11,0x11,0x0d,0x0a在ASCII表中是沒有可視字符的
所以串口打印是空白的

評分

參與人數 1黑幣 +15 收起 理由
13872888583 + 15

查看全部評分

回復

使用道具 舉報

ID:883242 發表于 2023-4-21 12:45 | 顯示全部樓層
  1. ch[0]="0123456789abcdef"[s>>4];
  2. ch[1]="0123456789abcdef"[s&0xf];
復制代碼

評分

參與人數 1黑幣 +5 收起 理由
13872888583 + 5

查看全部評分

回復

使用道具 舉報

ID:1073202 發表于 2023-4-21 16:19 | 顯示全部樓層
用for循環數組,然后結合strcat函數進行拼接
回復

使用道具 舉報

ID:1073202 發表于 2023-4-21 16:21 | 顯示全部樓層
  1. int i;
  2.         int arry[7] = {5,2,0,1,3,1,4};
  3.         char str[5] = "\0";
  4.         char str1[10] = "\0";
  5.        
  6.         for(i=0;i<7;i++)
  7.         {
  8.                 sprintf(str,"%d",arry[i]);
  9.                 strcat(str1,str);
  10.         }
  11.         printf("%s\r\n",str1);
復制代碼

評分

參與人數 1黑幣 +15 收起 理由
13872888583 + 15

查看全部評分

回復

使用道具 舉報

ID:731755 發表于 2023-4-21 19:49 來自觸屏版 | 顯示全部樓層
gf3gf3 發表于 2023-4-21 16:21

感謝,兄弟堪稱及時雨宋公明。
回復

使用道具 舉報

ID:731755 發表于 2023-4-21 19:51 來自觸屏版 | 顯示全部樓層
lkc8210 發表于 2023-4-21 11:17
藍牙助手通常有Hex模式和文字模式
Hex模式發11110d0a, 單片機收到0x11,0x11,0x0d,0x0a
文字模式發11110d0 ...

感謝,一看表格,知道了問題所在呢?
回復

使用道具 舉報

ID:1073299 發表于 2023-4-22 15:02 來自觸屏版 | 顯示全部樓層
可以發送一些ABC之類的可以顯示的字符,再把接收到的數據查表或者計算對比
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表