我正在寫一個函數來從給定的字符串構建校驗和。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