Landmark 发表于 2023-7-3 17:44:55

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

意思是想在UART输出一个十六进制数 0x00

lyping1987 发表于 2023-7-3 17:45:41

当然可以啊。。。有停止位。可以打印出来

t3486784401 发表于 2023-7-3 17:56:03

"0x%02X"   

tang_qianfeng 发表于 2023-7-3 17:58:19

\x00,转义一下

kitten 发表于 2023-7-3 17:59:33

十六进制直接用串口发送的函数不是更简单么

Landmark 发表于 2023-7-3 18:01:47

kitten 发表于 2023-7-3 17:59
十六进制直接用串口发送的函数不是更简单么
(引用自5楼)

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

Landmark 发表于 2023-7-3 18:02:37

tang_qianfeng 发表于 2023-7-3 17:58
\x00,转义一下
(引用自4楼)

大神方便写一下完整的语句吗?{:lol:}

tang_qianfeng 发表于 2023-7-3 18:12:11

字符串里哪里要输出00,就添哪里啊

Landmark 发表于 2023-7-3 18:25:54

tang_qianfeng 发表于 2023-7-3 18:12
字符串里哪里要输出00,就添哪里啊
(引用自8楼)

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

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

iamseer 发表于 2023-7-4 02:41:26

0在字符串里是作为结束符使用,如果你把0插到中间会导致字符串被截断。
检查一下arch_printf定向的putc之类的函数,然后直接输出。

Landmark 发表于 2023-7-4 02:58:33

iamseer 发表于 2023-7-4 02:41
0在字符串里是作为结束符使用,如果你把0插到中间会导致字符串被截断。
检查一下arch_printf定向的putc之类 ...
(引用自10楼)

谢谢您提供的方向。

laujc 发表于 2023-7-4 07:35:01

0x0直接输出就可以了呀,有什么问题?\0才是结束符

tcm123 发表于 2023-7-4 08:21:08

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

'\0'==0   

初音之恋 发表于 2023-7-4 08:43:47

0x00=\0 ,只能输出'0',或者不用printf

yyts 发表于 2023-7-4 09:50:02

Landmark 发表于 2023-7-3 18:01
代码空间吃紧的原因,打印的数据结构很复杂,使用printf可以很方便的输出。 ...
(引用自6楼)

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

Landmark 发表于 2023-7-4 09:58:54

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

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

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

初音之恋 发表于 2023-7-4 10:04:53

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

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

ycheng2004 发表于 2023-7-4 10:11:07

sizeof()查询要发送的数据长度即可,

laujc 发表于 2023-7-4 10:20:25

初音之恋 发表于 2023-7-4 08:43
0x00=\0 ,只能输出'0',或者不用printf
(引用自14楼)

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

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

tuy0326 发表于 2023-7-4 11:28:00

laujc 发表于 2023-7-4 10:20
0的ascii码是48
\0的ascii码是0
怎么相等了?
(引用自19楼)

0x0 是 0 不是48
页: [1]
查看完整版本: 使用printf函数可以打印0x00出来吗?