16进制加法校验和

nq19860409 2009-03-18 02:39:10
char ch;
int a=0,h=0,b=0;
a=1;
a=j;
while(a) //将测试列表所选行转换为16进制
{ h+=((a)%16)<<b;
a/=16;
b+=4;
}


ch=(char)h&0xff;
sendBuffer[0]=0x7e;
sendBuffer[1]=0x03;
sendBuffer[2]=0x06;
sendBuffer[3]=0x60;
sendBuffer[4]=0x01;
sendBuffer[5]=0x00;
sendBuffer[6]=ch;
sendBuffer[7]=0x00;
sendBuffer[8]=01;
sendBuffer[9]=0x00;
sendBuffer[10]=0x6B+sendBuffer[6];
sendBuffer[11]=0x00;

sendBuffer[10]是校验和的低字节sendBuffer[11]是校验和的高字节
校验和是sendBuffer[1]加到sendBuffer[9]的和,如果未产生进未,则sendBuffer[11]始终=0x00没有问题;但产生进位后,如何把进位赋给sendBuffer[11]呢,比方说校验和为从0x00ff变为0x0100时.求高手写出代码谢谢
...全文
213 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
china_west 2009-03-25
  • 打赏
  • 举报
回复
up
brookmill 2009-03-25
  • 打赏
  • 举报
回复
int sum = 0;
// 循环累加 sum = sendBuffer[1] + ... + sendBuffer[9]
sendBuffer[10] = sum & 0xFF;
sendBuffer[11] = (sum >> 8) & 0xFF;

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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