找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2394|回復(fù): 15
收起左側(cè)

關(guān)于C語(yǔ)言將數(shù)組轉(zhuǎn)換成字符串的方法

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

評(píng)分

參與人數(shù) 1黑幣 +11 收起 理由
13872888583 + 11

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:879348 發(fā)表于 2023-4-21 08:00 | 顯示全部樓層
sprintf函數(shù)非常強(qiáng)大

評(píng)分

參與人數(shù) 1黑幣 +5 收起 理由
13872888583 + 5

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:883242 發(fā)表于 2023-4-21 09:22 | 顯示全部樓層
wufa1986 發(fā)表于 2023-4-21 08:00
sprintf函數(shù)非常強(qiáng)大

sprintf異常耗費(fèi)資源,千萬(wàn)別用。

評(píng)分

參與人數(shù) 1黑幣 +5 收起 理由
13872888583 + 5

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

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

你好,老師,我直接說(shuō)問(wèn)題吧,我用手機(jī)藍(lán)牙助手發(fā)送11110d0a,反正這之類(lèi)的十六進(jìn)制的,串口打印是空白,不過(guò)顯示的位數(shù)是2位,這個(gè)是對(duì)的,我想看看在OLED上顯示看看顯示什么,  我之前是轉(zhuǎn)換成整型數(shù)字,顯示的數(shù)字有點(diǎn)問(wèn)題,所以讓它顯示字符串,不過(guò)后期想做一個(gè)藍(lán)牙小車(chē),
回復(fù)

使用道具 舉報(bào)

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

謝謝,這個(gè)函數(shù)以前在浮點(diǎn)數(shù)顯示的時(shí)候用過(guò),感覺(jué)挺方便的,那我看一下這個(gè)函數(shù)
回復(fù)

使用道具 舉報(bào)

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

評(píng)分

參與人數(shù) 1黑幣 +5 收起 理由
13872888583 + 5

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

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

沒(méi)理解錯(cuò)的話,你收到的是0x01,0x23,0x45,0x66,0x78,0x09這樣的數(shù)據(jù),你要顯示的是012345667809..。
如果是這樣,壇里有例子。。你搜一下

評(píng)分

參與人數(shù) 1黑幣 +5 收起 理由
13872888583 + 5

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

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

評(píng)分

參與人數(shù) 1黑幣 +15 收起 理由
13872888583 + 15

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

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

評(píng)分

參與人數(shù) 1黑幣 +5 收起 理由
13872888583 + 5

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:1073202 發(fā)表于 2023-4-21 16:19 | 顯示全部樓層
用for循環(huán)數(shù)組,然后結(jié)合strcat函數(shù)進(jìn)行拼接
回復(fù)

使用道具 舉報(bào)

ID:1073202 發(fā)表于 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);
復(fù)制代碼

評(píng)分

參與人數(shù) 1黑幣 +15 收起 理由
13872888583 + 15

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:731755 發(fā)表于 2023-4-21 19:49 來(lái)自觸屏版 | 顯示全部樓層
gf3gf3 發(fā)表于 2023-4-21 16:21

感謝,兄弟堪稱及時(shí)雨宋公明。
回復(fù)

使用道具 舉報(bào)

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

感謝,一看表格,知道了問(wèn)題所在呢?
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表