搜索
bottom↓
回复: 19

使用printf函数可以打印0x00出来吗?

[复制链接]

出0入4汤圆

发表于 2023-7-3 17:44:55 | 显示全部楼层 |阅读模式
意思是想在UART输出一个十六进制数 0x00

出235入235汤圆

发表于 2023-7-3 17:45:41 | 显示全部楼层
当然可以啊。。。有停止位。可以打印出来

出200入2554汤圆

发表于 2023-7-3 17:56:03 | 显示全部楼层
"0x%02X"   

出0入18汤圆

发表于 2023-7-3 17:58:19 来自手机 | 显示全部楼层
\x00,转义一下

出0入1209汤圆

发表于 2023-7-3 17:59:33 | 显示全部楼层
十六进制直接用串口发送的函数不是更简单么

出0入4汤圆

 楼主| 发表于 2023-7-3 18:01:47 | 显示全部楼层
kitten 发表于 2023-7-3 17:59
十六进制直接用串口发送的函数不是更简单么
(引用自5楼)

代码空间吃紧的原因,打印的数据结构很复杂,使用printf可以很方便的输出。

出0入4汤圆

 楼主| 发表于 2023-7-3 18:02:37 | 显示全部楼层
tang_qianfeng 发表于 2023-7-3 17:58
\x00,转义一下
(引用自4楼)

大神方便写一下完整的语句吗?

出0入18汤圆

发表于 2023-7-3 18:12:11 来自手机 | 显示全部楼层
字符串里哪里要输出00,就添哪里啊

出0入4汤圆

 楼主| 发表于 2023-7-3 18:25:54 | 显示全部楼层
tang_qianfeng 发表于 2023-7-3 18:12
字符串里哪里要输出00,就添哪里啊
(引用自8楼)

这个不行:arch_printf("DEVICE_NAME\x00");

arch_printf这个不是标准的printf,看来是它的原因咯?

出0入309汤圆

发表于 2023-7-4 02:41:26 | 显示全部楼层
0在字符串里是作为结束符使用,如果你把0插到中间会导致字符串被截断。
检查一下arch_printf定向的putc之类的函数,然后直接输出。

出0入4汤圆

 楼主| 发表于 2023-7-4 02:58:33 来自手机 | 显示全部楼层
iamseer 发表于 2023-7-4 02:41
0在字符串里是作为结束符使用,如果你把0插到中间会导致字符串被截断。
检查一下arch_printf定向的putc之类 ...

(引用自10楼)

谢谢您提供的方向。

出0入4汤圆

发表于 2023-7-4 07:35:01 | 显示全部楼层
0x0直接输出就可以了呀,有什么问题?\0才是结束符

出10入61汤圆

发表于 2023-7-4 08:21:08 | 显示全部楼层
laujc 发表于 2023-7-4 07:35
0x0直接输出就可以了呀,有什么问题?\0才是结束符
(引用自12楼)

'\0'==0   

出0入16汤圆

发表于 2023-7-4 08:43:47 | 显示全部楼层
0x00=\0 ,只能输出'0',或者不用printf

出0入224汤圆

发表于 2023-7-4 09:50:02 来自手机 | 显示全部楼层
Landmark 发表于 2023-7-3 18:01
代码空间吃紧的原因,打印的数据结构很复杂,使用printf可以很方便的输出。 ...
(引用自6楼)

代码空间吃紧就不要用print了,你可以把所有的print去掉看能省下多少空间

出0入4汤圆

 楼主| 发表于 2023-7-4 09:58:54 | 显示全部楼层
yyts 发表于 2023-7-4 09:50
代码空间吃紧就不要用print了,你可以把所有的print去掉看能省下多少空间
(引用自15楼)

我这个MCU比较奇特,printf的代码已经固化在ROM当中,相当于它提供一个函数指针给我调用,而这个函数指针指向到ROM当中,

也就是说printf不占用我所编译代码的空间,不用它就白不用了。

出0入16汤圆

发表于 2023-7-4 10:04:53 | 显示全部楼层
Landmark 发表于 2023-7-4 09:58
我这个MCU比较奇特,printf的代码已经固化在ROM当中,相当于它提供一个函数指针给我调用,而这个函数指针 ...
(引用自16楼)

printf本身都会转成字符串,你用0x00干嘛,不是应该直接变成"00"吗

出0入30汤圆

发表于 2023-7-4 10:11:07 | 显示全部楼层
sizeof()查询要发送的数据长度即可,

出0入4汤圆

发表于 2023-7-4 10:20:25 | 显示全部楼层
初音之恋 发表于 2023-7-4 08:43
0x00=\0 ,只能输出'0',或者不用printf
(引用自14楼)


0的ascii码是48
\0  的ascii码是0
怎么相等了?

想输出0就直接输出了,没感觉有什么问题,和输出0x01有区别吗
可能我还是没明白楼主的问题吧

出0入0汤圆

发表于 2023-7-4 11:28:00 | 显示全部楼层
laujc 发表于 2023-7-4 10:20
0的ascii码是48
\0  的ascii码是0
怎么相等了?
(引用自19楼)

0x0 是 0 不是48
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 09:53

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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