(100)想做一个程序,将收到的信息以16进的方式打的屏幕上。总也不成功?

onedayonehole 2005-03-24 06:27:48
/*
函数说明:将接收到的字节数据以16进制的方式打印到屏幕
参数说明:
创建日期:2005-3-24 13:57
*/
void DebugX (const char *pSource,int iLen)
{
int i;int n = 0;char c;
for(i = 0; i < iLen - 1; i++)
{
c = pSource[i] >> 4;
if(c >= 0 && c <=9)
c = c + '0';
else
c = c + 'A' - 0x0A + 16;

printf("%c",c);

c = pSource[i] & 0x0F;
if(c >= 0 && c <=9)
c = c + '0';
else
c = c + 'A' - 0x0A;
printf("%c ",c);

if(n++ > 40)
{
n = 0;
printf("\n");
}
}
printf("\n");
}
??????
...全文
91 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
geopower 2005-03-25
  • 打赏
  • 举报
回复
#include<iomanip.h>

cout<<hex<<n;
nodummy 2005-03-24
  • 打赏
  • 举报
回复
转换到int*是一种不好的行为,因为不是所有的平台都是Big Endian的,这样的行为将导致Little Endian平台上,4字节输出的时候产生字节倒序的问题……
sharkhuang 2005-03-24
  • 打赏
  • 举报
回复
printf("%X",*((int*)pSource)++)
TangChin 2005-03-24
  • 打赏
  • 举报
回复
就是嘛,如果你没什么特殊应用
就用printf的%x就好啦。
nodummy 2005-03-24
  • 打赏
  • 举报
回复
何苦呢?看得都累啊……

不在乎效率的话,直接用printf("%2.2X",*pSource++)就可以了,记住做个循环

效率高点的话那就一次性多输出几个字符,这样就会好点……

不过就算是上面那个效率低的我也觉得不会比你的代码效率低多少……

23,217

社区成员

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

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