我正在尝试使用此代码来计算CRC16旁路。对于常规字符,它可以工作但是对于像3
这样的十六进制序列,它会失败,而不会返回正确的值。对我来说很容易,通常我不会写C代码。
0xA0 0x00 0x01 0x01
答案 0 :(得分:0)
strlen(s);
用于查找字符串的长度,而不是用于查找所使用的字符数组的长度,尤其是可能包含的字符数组的长度'\0'
。 @Eugene Sh.
代码需要跟踪与另一个变量一起使用的数组大小。
// void append(char* s, char c) {
void append(char* s, size_t *sz, char c) {
s[*sz] = c;
(*sz)++;
}
...
size_t size = 0;
append(sss, &size, d);
append(sss, &size, d1);
append(sss, &size, d2);
append(sss, &size, d3);
unsigned char* uCB1 = (unsigned char*)sss;
unsigned short CRC= CalculateCRC(uCB1, size);
// printf("%s\n", sss);
write a loop to print each `sss[]`.