51单片机,在keil中调试,调用printf函数,有关于输出的数据格式的问题进行请教!

unsignedchara=255;unsignedcharb=0x61;printf("%d\r\n",a);//这样输出的a是并不正确,我希望a直接在串口助手上显示2... unsigned char a=255;
unsigned char b=0x61;
printf("%d\r\n",a);//这样输出的a是并不正确,我希望a直接在串口助手上显示255
然后调用printf输出b,就是直接显示61。我想应该是数据格式不对,可是该怎么写呢?求帮助!
展开
 我来答
沙里波特
2012-04-01 · TA获得超过5251个赞
知道大有可为答主
回答量:1.1万
采纳率:95%
帮助的人:644万
展开全部
unsigned char a=255;
unsigned char b=0x61;
printf("%d\r\n",a);//这样输出的a是并不正确,我希望a直接在串口助手上显示255
那么,楼主看到的是什么? 你用十进制显示方式了吗?

然后调用printf输出b,就是直接显示61。
显示正确。
你用是16进制显示。

我想应该是数据格式不对,。。。
改改你的串口助手即可,是显示方式不对。
做而论道
高能答主

2012-04-01 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
使用printf("%d\r\n",a)之前,先要设置串口的方式、波特率等。
追问
我已经设置好了,只是输出的没人不对,我觉得是%d这里有问题,只是不知道怎么改,请阁下帮忙呀!
追答
unsigned char  b=0x61;
……
然后调用printf输出b,就是直接显示61。
----
这不是完全正确吗?

你在串口助手上设置,按照ASCII码显示。

然后:
printf("%d",'2');
printf("%d",'5');
printf("%d\r\n",'5');

串口助手就应该显示:255。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
EricX4096
2012-05-19 · 超过10用户采纳过TA的回答
知道答主
回答量:70
采纳率:0%
帮助的人:45.6万
展开全部
%d 针对 int 类型
%c 针对 char类型

应该是这个问题
你要输出255 必须a转成int类型 同时printf %d
针对char的255 是ASCII码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dg349114309
2012-04-01
知道答主
回答量:3
采纳率:0%
帮助的人:4676
展开全部
试着用0x255看看···因为你直接写255 系统识别为10进制数,转化成255的对应十六进制数应该是FF
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a105865094
2012-04-01 · TA获得超过240个赞
知道小有建树答主
回答量:571
采纳率:100%
帮助的人:247万
展开全部
printf("%d\r\n",(unsigned int)a);
这样试下看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式