找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1221|回复: 7
收起左侧

请教C语言printf格式

[复制链接]
ID:283954 发表于 2022-5-26 03:42 | 显示全部楼层 |阅读模式
这是我抄来的C代码,编译后跑出来显示的字符是:(Buffer里面的)

90306E

我需要输出的是90的HEX值,30的HEX值,6E的HEX值(1个byte,90H,30H,6EH), 而不是字符,该怎么做呢?
另外想知道(RxBuffer[ i])是一个字节(90H)还是两个字节(字符9和0)?我想要做程序判断用。


for ( i = 0; i < len; i ++ ){
switch (i)
{
case 1:
   printf("%02X",(UINT16)(RxBuffer[ i]));
  //if ((UINT16)RxBuffer[ i] == 0xC0) {
  //haha = 1;
  //}
   break;
case 2:
   printf("%02X",(UINT16)(RxBuffer[ i]));
   break;
case 3:
    printf("%02X",(UINT16)(RxBuffer[ i]) );
   break;
}
}



回复

使用道具 举报

ID:824490 发表于 2022-5-26 09:10 | 显示全部楼层
如果,90是十进制,那90的16进制=90/16<<4|90%16=0x5A

RxBuffer[ i])是一个字节(90H)还是两个字节(字符9和0)?
就看你是如何定义RxBuffer[]这个数组的了。
回复

使用道具 举报

ID:277550 发表于 2022-5-26 10:22 | 显示全部楼层
不是字符,就是 ungsigned char 类型,除符号、字母、数字很,很多是不可见的
回复

使用道具 举报

ID:161164 发表于 2022-5-26 10:43 来自手机 | 显示全部楼层
printf就是把所有数据转换为字符送到串口,想直接传数值就用putchar

评分

参与人数 1黑币 +15 收起 理由
dalaoshi + 15 很给力!

查看全部评分

回复

使用道具 举报

ID:94031 发表于 2022-5-26 10:45 | 显示全部楼层
用 printf 就是要把 RxBuffer 转变成字符发送,要发送HEX值直接串口发送就行,不要用 printf 。

评分

参与人数 1黑币 +15 收起 理由
dalaoshi + 15 很给力!

查看全部评分

回复

使用道具 举报

ID:283954 发表于 2022-5-26 16:19 | 显示全部楼层
谢谢各位,试验了一晚的问题,一下就解决了,用putchar((UINT16)(RxBuffer[i]) )出来的就是90H了。

另外我需要作字节判断,i=1时,如果((UINT16)RxBuffer[i]) 是C0H, 就设haha=1, 等到i=3时,必须haha是0才可输出字符,若不是0,则重置haha=0,
编译时无错误,跑的时候,全部都是只有2个字节,i=3的那个都没有输出,逻辑没问题,应该是c语言表达字符不对。

switch:

CASE 1:
if (((UINT16)RxBuffer[i]) == 0xC0)  {
   haha = 1;
}               

                                                          
CASE 3:
if (haha == 0) {
  putchar((UINT16)(RxBuffer[i]) );
} else {
  haha == 0;
}

C语言还未入门,问题很幼稚,大家别笑哦。
回复

使用道具 举报

ID:883242 发表于 2022-5-26 21:46 | 显示全部楼层
dalaoshi 发表于 2022-5-26 16:19
谢谢各位,试验了一晚的问题,一下就解决了,用putchar((UINT16)(RxBuffer) )出来的就是90H了。

另外我 ...

haha == 0;
这么明显的错误看不出来吗?

评分

参与人数 1黑币 +15 收起 理由
dalaoshi + 15 很给力!

查看全部评分

回复

使用道具 举报

ID:283954 发表于 2022-5-26 22:43 | 显示全部楼层
Hephaestus 发表于 2022-5-26 21:46
haha == 0;
这么明显的错误看不出来吗?

就是还没入门嘛! 终于搞懂==是用来比较的,=是用来赋值的。

这是IC厂家写的例子,非常复杂,有USB驱动,完全看不懂,但修改一下适合自己用还是可以的,也被迫学了几个C代码,虽然撞到门槛,也算是入门了。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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