QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5342|回复: 11

关于printf输出十六进制的问题,请教!

[复制链接]
发表于 2004-9-20 18:56:51 | 显示全部楼层 |阅读模式
我用
char c;
c=0xEB;
printf("Result:%x",c);

输出的是Result:ffffffeb
想只输出一个字节eb,应该怎么格式化?谢谢!
发表于 2004-9-20 19:44:08 | 显示全部楼层
楼上的赋值似乎不好理解
回复

使用道具 举报

 楼主| 发表于 2004-9-20 20:00:14 | 显示全部楼层
我要写linux下的CDT规约,上面的赋值是对的。
即开辟一个字节个空间,把16进制的EB存进去,我用串口从另一头收也能收到,但我想打印出来,结果总是前面多了三个FF,我查手册,手册上说%X是格式化输出一个无符号型16进制数,而linux中无符号型整数是占四个字节,所以前面会多出三对FF,在VC中,输出的时候用%X02就能格式化输出一个字节,但GCC好像不行。不知道哪位大侠知道怎么搞?不会要自己写一个print吧?
回复

使用道具 举报

发表于 2004-9-20 20:27:48 | 显示全部楼层
%hhx
回复

使用道具 举报

发表于 2004-9-20 20:30:35 | 显示全部楼层
楼上的才是标准c的输出方法。hh表示char,h表示short,hh表示.........等。win让人迷糊   
回复

使用道具 举报

 楼主| 发表于 2004-9-20 21:32:17 | 显示全部楼层
哦,原来如此啊,我先试试,谢谢了!
回复

使用道具 举报

发表于 2004-9-22 08:42:09 | 显示全部楼层
%2x 只输出两位, x前的整数可以控制输出的位数
回复

使用道具 举报

发表于 2004-9-22 09:04:53 | 显示全部楼层
楼上的试过没有啊
回复

使用道具 举报

 楼主| 发表于 2004-9-22 21:40:54 | 显示全部楼层
试过了,昨天论坛上不来。使用%hX格式化输出FFEB,后来改成
unsigned char c;
c=0xEB;
printf("Result:%X",c);
就OK了!
回复

使用道具 举报

发表于 2004-9-23 09:08:54 | 显示全部楼层
%hhX,两个h才将其定义为unsigned char 输出。
回复

使用道具 举报

 楼主| 发表于 2004-9-25 12:32:45 | 显示全部楼层
我用%hhX好像不行啊,一定要把c定义成unsinged char才行啊,难道是版本问题?
回复

使用道具 举报

发表于 2004-9-25 14:30:55 | 显示全部楼层
这就不知为何了。我的用char 类型都可以 gcc3.3.2
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-7 11:39 , Processed in 0.038220 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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