我正在写一个函数来从给定的字符串构建校验和。C/C++校验位
校验和定义如下: 校验和前面一行上包括STX和CR在内的所有字符的二进制和的7个低位的2的补码。
到目前为止,我想出了:
CheckDigit = getcheckdigit(buffer);
sprintf(buffer,"%c%c%c%s%s%c%c",
2,
iDP,
iStatus,
my_ltoa(s,NetWeight,7,0x00),
my_ltoa(t,TareWeight,6,0x00),
13,
CheckDigit);
int getcheckdigit(char *buffer) {
int checkdigit,i;
int sum;
char *ptr;
for (i=0;i<=16;i++) {
*ptr=buffer[i];
sum = sum + atoi(ptr);
}
sum = sum % 64;
checkdigit = ~sum;
checkdigit = checkdigit + 1;
return checkdigit;
}
这似乎返回相同的值,我想不通为什么我不能调试。
你为什么不能调试呢? – CharlesB 2011-03-02 10:40:06
请阅读本书,解释如何使用指针。你做得很错误。 – ThiefMaster 2011-03-02 10:40:34
当你说“所有字符的二进制和”时,你的意思是ASCII值的总和?那么你不需要atoi。什么是STX? – Rup 2011-03-02 10:43:13