怎么用printf输出2个字节的十六进制数
char msg[]={0x01,0x02,0x03, 0x04};
for(i=0;i*2<3;i++)
{
printf("0x%02x%02x\n",msg[i*2],msg[i*2+1]);
}
printf 函数的原型为:
# include <stdio.h>
int printf(const char *format, ...);
扩展资料
printf 的格式有四种:
1、printf("字符串\n");
其中\n表示换行的意思。它是一个转义字符,前面在讲字符常量的时候见过。其中 n 是“new line”的缩写,即“新的一行”。
此外需要注意的是,printf 中的双引号和后面的分号必须是在英文输入法下。双引号内的字符串可以是英文,也可以是中文。
2、printf("输出控制符",输出参数);
如果是%x就是以十六进制的形式输出,要是%o就是以八进制的形式输出。
3、printf("输出控制符1 输出控制符2…", 输出参数1, 输出参数2, …);
因为上面 %d 和 %d之间有空格,printf 中双引号内除了输出控制符和转义字符\n外,所有其余的普通字符全部都原样输出。
要输出2个字节的16进制数,可以在printf中使用%02x或者%02X格式,同时将值转为unsigned char型。
一、printf为格式化输出函数,可以将变量以各种格式化方式输出。
二、格式化输出16进制的格式字符串为%x或%X。
当输出的16进制数带有字母a~f时,两种格式字符串输出结果会有区别:
1、%x格式,那么输出的是小写的a~f;
2、%X格式,那么输出的是大写的A~F.
三、要固定输出两个字节,可以使用%02x或者%02X,其中02的意思是,输出2个字节,不足补0. 不过如果实际值超过2字节,这个就会输出实际值了。
所以要绝对输出2字节,需要将数值转为unsigned char型,保证输出不会超过。
即将n以2字节16进制输出,写作:
printf("%02x",(unsigned char)n);
printf("%16x",a);