字符串前面多出ffffff

亚细亚 2011-10-20 11:04:08
测试结果:
为什么strMidData字符串前面会有ffffff?

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

void showInfoHEX()
{
unsigned int i=0;
char strCp[13]={0};
unsigned char strMid[16]={0};
char strMidData[1024]={0};
byte sgStr[13]={0xAA,0x01,'3','7','1','0','0','0','4','4','2','2','\0'};

strcpy(strCp,sgStr);

for(i=0;i<strlen(strCp);i++)
{
sprintf(strMid,"%02x ",*(strCp+i));
strcat(strMidData,strMid);
}
printf("%s",strMidData);
}

int main(int argc, char *argv[])
{

showInfoHEX();
}
...全文
189 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2011-10-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yaxiya 的回复:]
引用 1 楼 luciferisnotsatan 的回复:

sprintf(strMid,"%02x ",(unsigned char)*(strCp+i));
强转下

嗯!转换后正确;
这是什么原因?
[/Quote]
因为sprintf就是这么实现的。
self001 2011-10-20
  • 打赏
  • 举报
回复
呵呵,昨天也遇到过这样的一个问题 我把它改成unsiged char就行了,结合你的代码,你把要显示的16进制的数组改成无符号unsiged 的!应该没错的
亚细亚 2011-10-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 luciferisnotsatan 的回复:]

sprintf(strMid,"%02x ",(unsigned char)*(strCp+i));
强转下
[/Quote]
嗯!转换后正确;
这是什么原因?
luciferisnotsatan 2011-10-20
  • 打赏
  • 举报
回复
sprintf(strMid,"%02x ",(unsigned char)*(strCp+i));
强转下

69,336

社区成员

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

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