找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1432|回复: 15
打印 上一主题 下一主题
收起左侧

关于C语言将数组转换成字符串的方法

[复制链接]
跳转到指定楼层
楼主
ID:731755 发表于 2023-4-20 22:44 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
你们好,各位,前段时间研究蓝牙模块,现在终于有点眉目了。由于C语言没有学好,目前有个问题还是问一下大家,将蓝牙模块接收到的数组转换成字符串在oled屏幕上显示。网上虽然有这样的资料,写的不清不楚或者不是C语言用的,不知道各位如何解决这个问题的。有介绍这方面的资料也可以的。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
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

查看全部评分

回复

使用道具 举报

5#
ID:883242 发表于 2023-4-21 09:22 | 只看该作者
wufa1986 发表于 2023-4-21 08:00
sprintf函数非常强大

sprintf异常耗费资源,千万别用。

评分

参与人数 1黑币 +5 收起 理由
13872888583 + 5

查看全部评分

回复

使用道具 举报

6#
ID:731755 发表于 2023-4-21 09:24 | 只看该作者
Hephaestus 发表于 2023-4-20 23:22
你先要举个栗子吧,数组具体数字是什么,你打算转换成什么字符串?

你好,老师,我直接说问题吧,我用手机蓝牙助手发送11110d0a,反正这之类的十六进制的,串口打印是空白,不过显示的位数是2位,这个是对的,我想看看在OLED上显示看看显示什么,  我之前是转换成整型数字,显示的数字有点问题,所以让它显示字符串,不过后期想做一个蓝牙小车,
回复

使用道具 举报

7#
ID:731755 发表于 2023-4-21 09:32 | 只看该作者
Y_G_G 发表于 2023-4-21 00:41
一般入门的都会用STC单片机
如果是用STC的话,就用程序空间大点的,成本并不重要,能学到东西就行
用sprintf ...

谢谢,这个函数以前在浮点数显示的时候用过,感觉挺方便的,那我看一下这个函数
回复

使用道具 举报

8#
ID:609503 发表于 2023-4-21 09:37 | 只看该作者
0x11110d0a,直接用printf()转换格式成ASCII

评分

参与人数 1黑币 +5 收起 理由
13872888583 + 5

查看全部评分

回复

使用道具 举报

9#
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

查看全部评分

回复

使用道具 举报

10#
ID:161164 发表于 2023-4-21 11:17 | 只看该作者
蓝牙助手通常有Hex模式和文字模式
Hex模式发11110d0a, 单片机收到0x11,0x11,0x0d,0x0a
文字模式发11110d0a,单片机收到经ASCII转换的数值0x31,0x31,0x31,0x30,0x64,0x30,0x61
以下是ASCII表

可以看到0x11,0x11,0x0d,0x0a在ASCII表中是没有可视字符的
所以串口打印是空白的

评分

参与人数 1黑币 +15 收起 理由
13872888583 + 15

查看全部评分

回复

使用道具 举报

11#
ID:883242 发表于 2023-4-21 12:45 | 只看该作者
  1. ch[0]="0123456789abcdef"[s>>4];
  2. ch[1]="0123456789abcdef"[s&0xf];
复制代码

评分

参与人数 1黑币 +5 收起 理由
13872888583 + 5

查看全部评分

回复

使用道具 举报

12#
ID:1073202 发表于 2023-4-21 16:19 | 只看该作者
用for循环数组,然后结合strcat函数进行拼接
回复

使用道具 举报

13#
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

查看全部评分

回复

使用道具 举报

14#
ID:731755 发表于 2023-4-21 19:49 来自手机 | 只看该作者
gf3gf3 发表于 2023-4-21 16:21

感谢,兄弟堪称及时雨宋公明。
回复

使用道具 举报

15#
ID:731755 发表于 2023-4-21 19:51 来自手机 | 只看该作者
lkc8210 发表于 2023-4-21 11:17
蓝牙助手通常有Hex模式和文字模式
Hex模式发11110d0a, 单片机收到0x11,0x11,0x0d,0x0a
文字模式发11110d0 ...

感谢,一看表格,知道了问题所在呢?
回复

使用道具 举报

16#
ID:1073299 发表于 2023-4-22 15:02 来自手机 | 只看该作者
可以发送一些ABC之类的可以显示的字符,再把接收到的数据查表或者计算对比
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表