printf时出现的问题

zxyjyzxyjy 2006-12-19 11:32:23
char sum,xframe[15]={0x68,9,9,0x68,0x41,1,0x69,1,6,1,0,0,1,0,0x16};
sum = 0;
for(int i=4;i<13;i++)
sum += xframe[i];
xframe[13] = sum;//char(sum%0x100)或char(sum&0xff)都一样的结果
for(int i=0;i<15;i++)
{
tempstr.printf("%02x ",xframe[i]);
str += tempstr;
}
   
这时的str为何为68 09 09 68 41 01 69 01 06 01 00 00 01 ffffffb4 16
就是这个串中的ffffffb4。
...全文
171 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
netsys2 2006-12-19
  • 打赏
  • 举报
回复
haiqian119(海嵌)是正确的。


BYTE sum,xframe[15]={0x68,9,9,0x68,0x41,1,0x69,1,6,1,0,0,1,0,0x16};
sum = 0;
for(int i=4;i<13;i++)
sum += xframe[i];
xframe[13] = sum;//char(sum%0x100)或char(sum&0xff)都一样的结果
AnsiString tempstr,str;
for(int i=0;i<15;i++)
{
tempstr.printf("%02x ",xframe[i]);
str += tempstr;
}

ShowMessage(str);
cczlp 2006-12-19
  • 打赏
  • 举报
回复
变为负数了.可以把
char sum,xframe[15]={0x68,9,9,0x68,0x41,1,0x69,1,6,1,0,0,1,0,0x16};改为
char xframe[15]={0x68,9,9,0x68,0x41,1,0x69,1,6,1,0,0,1,0,0x16};
int sum;
lurel 2006-12-19
  • 打赏
  • 举报
回复
xframe[13]超过char 定义的空间,溢出了。
海嵌 2006-12-19
  • 打赏
  • 举报
回复
unsigned char xframe[15]={0x68,9,9,0x68,0x41,1,0x69,1,6,1,0,0,1,0,0x16};

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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