有关打印格式以及串口输出形式整理
1、printf 打印格式:
1
printf(" "); //空格
2
printf("\n"); //换行
3
printf("\r\n"); //换行并移动光标到本行开始处
4
printf("%x"); //十六进制打印
5
printf("TT:%x,CRC:%x",t,crc1); //两个参数分别打印
6
printf("%u"); //十进制打印
7
printf(""); //
8
9
//位置前后不同,光标所在位置也不同,如下
10
printf("\r"); //标回到当前行首
11
printf("\n"); //标垂直向下换一行
12
13
eg: -表示光标
14
printf("\r"); //a- 前
15
printf("\r"); //-a 后
16
17
printf("\n"); // 前:
18
a-
19
printf("\n"); //后:
20
a
21
-
22
printf("\r\n");//前:
23
abc-
24
printf("\r\n");//后:
25
abc
26
-
27
//数据打印,包括十进制形式,十六进制形式,十六进制并且以前面标号数字标记
28
printf("%d",PulseTab0[j]); //十进制形式显示
29
printf("%04x",PulseTab0[j]); //十六进制显示,并且四位补齐
30
printf("[%3d]%04x,",j,PulseTab0[j]); //十六进制显示,并且数字标记
31
printf("a=%d\n", a);//按照十进制整数格式输出,显示 a=1234
32
printf("a=%d%%\n", a);//输出%号 结果 a=1234%
33
printf("a=%6d\n", a);//输出6位十进制整数 左边补空格,显示 a= 1234
34
printf("a=%06d\n", a);//输出6位十进制整数 左边补0,显示 a=001234
35
printf("a=%2d\n", a);//a超过2位,按实际输出 a=1234
36
printf("a=%-6d\n", a);///输出6位十进制整数 右边补空格,显示 a=1234
37
printf("f=%f\n", f);//浮点数有效数字是7位,结果 f=3.141593
38
printf("f=6.4f\n", f);//输出6列,小数点后4位,结果 f=3.1416
39
printf("x=%lf\n", x);//输出长浮点数 x=0.123457
40
printf("x=%18.16lf\n", x);//输出18列,小数点后16位,x=0.1234567891234567
41
printf("c=%c\n", c); //输出字符 c=A
42
printf("c=%x\n", c);//以十六进制输出字符的ASCII码 c=41
43
printf("s[]=%s\n", s);//%s遇见“\0”就停下,输出数组字符串s[]=Hello,World
44
printf("s[]=%6.9s\n", s);//输出最多9个字符的字符串 s[]=Hello,Wor
45
A | ABC | ABCDEFGH | |
格字符串式代码
|
A
|
ABC
|
ABCDEF
GH
|
%
S
整个
|
A
|
ABC
|
ABCDEFGH
|
%5
S
左5位,不足则补齐
|
####A
|
##ABC
|
ABCDEFGH
|
%.5
S
整个
|
A
|
ABC
|
ABCDE
|
%5.5
S
只取5位
|
####A
|
##ABC
|
ABCDE
|
%-5
S
右起至少5位
|
A####
|
ABC##
|
ABCDEFGH
|
Printf
格式化字符串
1 | -12 | 12345 | 12346789 | |
格式代码
|
1
|
-12
|
12345
|
123456789
|
%
d
十进制
|
1
|
-12
|
12345
|
123456789
|
%6
d
至少6位
|
#####1
|
###-12
|
#12345
|
123456789
|
%.4
d
至少4位
|
0001
|
-0012
|
12345
|
123456789
|
%6.4
d
左起至少6位
|
##0001
|
#-0012
|
#12345
|
123456789
|
%-4
d
右起至少5
|
1####
|
-12#
|
12345
|
123456789
|
%04
d
至少4位补0
|
0001
|
-012
|
12345
|
123456789
|
%+
d
|
+1
|
-12
|
+12345
|
+123456789
|
Printf
格式化整型数值
1 | 0.01 | 0.00012345 | 12345.6789 | |
格式代码
|
1
|
.01
|
.00012345
|
12345.6789
|
%
f
取小数点后6位
|
1.000000
|
0.010000
|
0.000123
|
12345.678900
|
%10.2
d
小数点前6位,小数点后2位
|
######1.00
|
#####0.01
|
######0.00
|
##12345.67
|
%
e
指数打印
|
1.000000e+00
|
1.000000e-02
|
1.234500e-04
|
1.234568e+04
|
%.4
e
指数小数点后4位打印
|
1.0000e+00
|
1.0000e-02
|
1.2345e-04
|
1.2346e+04
|
%
g
|
1
|
0.01
|
0.00012345
|
12345.7
|
格式代码 | 60229999999999975882752.000000 |
格式代码
|
6.023e23
|
%
f
|
60229999999999975882752.000000
|
%10.2
e
小数点前10,后2
|
60229999999999975882752.00
|
%
e
指数打印
|
6.023000e+23
|
%.4
e
指数小数点后4位
|
6.0230e+23
|
%
g
|
6.023e+23
|
2、串口数据传输
1
//串口传输
2
Usart1_Send((u8*)PulseTab0,400);
3
//485接口传输
4
RS485_Send_Data((u8*)PulseTab0,400);
此时,打印时是乱码,只有让它以十六进制显示,才能正确看到数据
3、数据格式强制转换方式
1
//串口传输
2
Usart1_Send((u8*)PulseTab0,400); //将u16的转换为u8,进行传输
4、打印数组元素
1)字符串数组每个元素单独打印,如下:
1
printf("%x%x%x%x%x%x%x%x%x\n",str[0],str[1],str[2],str[3],str[4],str[5],str[6],str[7],str[8]);
2)字符串数组元素,for循环打印元素
5、高八位,第八位存储
1
str[3]= (t>>8)&0xff; //先低八位存储
str[4]= t&0xff; //高八位存储
str[5]= crc1>>8; //同上
str[6]= crc1&0xff; //