送分题,关于printf输出格式的问题。

jhqjhq 2007-01-30 02:14:17
开发环境: linux2.4

从 fread(&mydata,1,1,file_fd);读出一个字节的数据,
然后我想把它用十六进制输出如 0x00,0x01之类的。

用printf("data = %08x",mydata);输出不行,会输出整个32位的数据,我只想输出读取的8位数据该如何做?
...全文
209 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jhqjhq 2007-01-31
  • 打赏
  • 举报
回复
ai .. 因为mydata是32位类型的。

printf("data = 0x%x",(*mydata)0x00000011);
yecheng_111 2007-01-30
  • 打赏
  • 举报
回复
好久没有写C了
上面的程序有问题

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int mydata = 12;

char s[40];
itoa(mydata,s,2);
printf("0x%x s:%s\n",mydata,s);

return 0;
}
yecheng_110 2007-01-30
  • 打赏
  • 举报
回复
这是我的测试程序
vc6编译通过

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int mydata;
fread(&mydata,1,1,stdin);
char s[8];
itoa(mydata,s,2);
printf("0x%x s:%s\n",mydata,s);
return 0;
}
yecheng_110 2007-01-30
  • 打赏
  • 举报
回复
char s[10];
itoa(mydata, s, 2); //转换成字符串,进制基数为2
yecheng_110 2007-01-30
  • 打赏
  • 举报
回复
char s[10];
itoa(mydata, s, 16); //转换成字符串,进制基数为16
jhqjhq 2007-01-30
  • 打赏
  • 举报
回复
to yecheng_110() :
我用fread(&mydata,1,1,file_fd);取的时候已经是8位了,第二个参数就代表1个字节
yecheng_110 2007-01-30
  • 打赏
  • 举报
回复
这个和printf无关
你可以用位操作取出其中的8位

23,126

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧