有意思,少个#,高手分析一下

qq14923349 2009-01-02 05:05:07
char buf[27];
char m,i;
m=0; //最原始的方法组组简单的帧

buf[0]='@';//起始
buf[1]='@';
buf[2]='1';//起始流水号,two bytes
buf[3]='0';
buf[4]='1';//主版本协议号2bytes
buf[5]='0';//用户版本协议号,自己定义
buf[6]='0';//时间,6bytes 年月日时分秒,由高到低
buf[7]='0';
buf[8]='0';
buf[9]='0';
buf[10]='0';
buf[11]='0';
buf[12]='F';//源地址,临时定义,4bytes
buf[13]='F';
buf[14]='F';
buf[15]='F';
buf[16]='E';//目的地址,临时定义4bytes
buf[17]='E';
buf[18]='E';
buf[19]='E';
buf[20]= '0' ; //应用数据单元长度,暂时规定定长,2bytes
buf[21]= '0' ;
buf[22]= '+'; //命令字节,读火灾报警控制器系统状态 61
for(i=0;i<21;i++)
m=m+buf[i+2];

buf[23]=m; //校验和,暂时不校验,赋为0,1BYTE
buf[24]='#';//结束标志,2bytes
buf[25]='#';
buf[26]='\0';

AfxMessageBox(buf);
TRACE(buf);

输出结尾应该有##结果只有一个

...全文
110 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq14923349 2009-01-04
  • 打赏
  • 举报
回复
楼上的废话
你不把我程序运行一下都不直到什么问题

ascii和控制字符是两个东西以为我不懂么
Show_Mike 2009-01-04
  • 打赏
  • 举报
回复
可以肯定的是,这不是mfc的问题,而是你表示的问题.从ascii码的取值来看,0与"0"也不是一回事.
菜牛 2009-01-02
  • 打赏
  • 举报
回复
数值和可显示字符不一样,搞清楚字符串的意思,不是什么数据都可以用字符串来处理。
naxiahucao 2009-01-02
  • 打赏
  • 举报
回复
有意思,看一下,学习学习
qq14923349 2009-01-02
  • 打赏
  • 举报
回复
楼上的眼花也好像答对了

谢谢各位高手
还有补充的吗?
用户 昵称 2009-01-02
  • 打赏
  • 举报
回复
眼花了,是m而不是'm'.
Conry 2009-01-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 qq14923349 的回复:]
为啥别的没有当成汉字来显示呢
[/Quote]
因为m的值大于0x80了,就被当作汉字的第一个字节了
qq14923349 2009-01-02
  • 打赏
  • 举报
回复
为啥别的没有当成汉字来显示呢
qq14923349 2009-01-02
  • 打赏
  • 举报
回复
这个是不是mfc的问题
我把这段数据传输过去里面的值是不是我原本赋予的值
谢谢高手
请再解答一下
Chivalry 2009-01-02
  • 打赏
  • 举报
回复
buf[23]=m; //校验和,暂时不校验,赋为0,1BYTE
buf[24]='#';

现实的时候,把这两个字节当成一个汉字显示了,显示了?
然后显示的那个#实际上是buf[25]='#';

你把buf[23]='0';就可以看到显示两个了

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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