找回密码
 立即注册

QQ登录

只需一步,快速开始

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

我想问一下51单片机char型的数据转字符串

[复制链接]
跳转到指定楼层
楼主
ID:647989 发表于 2020-2-29 14:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
比如char a=0xf0;然后我要把他转换为"0xf0",有什么方法没?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:235200 发表于 2020-2-29 16:31 | 只看该作者
本帖最后由 csmyldl 于 2020-3-1 01:01 编辑

如果只是单个转换的话,定义一个数组 char num[4];
然后num[0]='0';
num[1]='x';
if ((a>>4)>10))
  num[3]=(a>>4)+0x41;     //此处记错了 0x41是'A'
else num[3]=(a>>4)+0x30;
if ((a%16)>10))
  num[3]=(a%16)+0x41;
else num[3]=(a%16)+0x30;
回复

使用道具 举报

板凳
ID:647989 发表于 2020-2-29 17:54 | 只看该作者
csmyldl 发表于 2020-2-29 16:31
如果只是单个转换的话,定义一个数组 char num[4];
然后num[0]='0';
num[1]='x';

感谢大佬的回复
回复

使用道具 举报

地板
ID:159575 发表于 2020-2-29 18:15 来自触屏版 | 只看该作者
c语言就这点不好,转换起来很麻烦。我记得有个专门的第三方库,可以用。
回复

使用道具 举报

5#
ID:343304 发表于 2020-2-29 21:40 | 只看该作者
使用共同体切分,输入字符,可以输出整型。
回复

使用道具 举报

6#
ID:462827 发表于 2020-3-1 13:19 | 只看该作者
#define uchar unsigned char

    uchar a=0xf0;
    char str[5]="0x";
    printf("%d %d %d\n",a,a/16,a%16);
    str[2]=(a/16)>9?a/16-10+'a':a/16+'0';
    str[3]=(a%16)>9?a%16-10+'a':a%16+'0';
    str[4]='\0';

要用无符号数,不然结果会出错的。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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