如何用printf输出2个字节的十六进制数?

clleady 2012-02-05 03:19:11
如何用printf输出2个字节的十六进制数?
比如有char数组有4个字节0x01 0x02 0x03 0x04,用printf一个个输出我会。
但是如何联系输出为0x0102 0x0304呢
还有办法输出0x01020304吗?

我用的是printf("0x%02x\n",charstr[i]);

当然是可以
printf("0x%02x02x\n",charstr[i++],charstr[i]);
应该就能输出0x0102了。
请问有没有更好的办法?
...全文
1505 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
clleady 2012-02-05
  • 打赏
  • 举报
回复
不好意思,原来赋值错误。谢谢
clleady 2012-02-05
  • 打赏
  • 举报
回复
谢谢,请问如下问题?
struct t_header{ //t frame head
u32 t1:9;
u32 t2:19;
u32 t3:4;
}header;
为t_header赋值已经有了。
如何用printf打印出来?
printf("t2 data is 0x%03x\n",header.id);

打印出来的t2正确的有效位为8个bit。
其实第17个bit和第2个bit赋值为1,但是用printf("t2 data is 0x%05x\n",header.t2);办法没打印出来。x改成lx也不对,高手指教?

理论打印出来应该是0x20002
但是实际打印出来时0x00002
面包大师 2012-02-05
  • 打赏
  • 举报
回复
	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]);
}

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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