我有一些数据需要作为字符串连同 crc16 值一起发送。格式是这样的: ",,,...,crc16 “ 我有一个 crc16 函数,我将数据作为字符数组传递给它,crc 结果作为无符号短整数返回。我无法弄清楚如何将 crc 值附加到字符串,因为它与字符串的其余部分具有不同的数据类型。
我想我可能需要将 crc 转换为 2 个 ascii 字符。虽然不知道该怎么做
我会在这里做一些猜测:
这里是一个简单的代码,用于复制字符串并将其附加计算出的 CRC 值:
#include <stdio.h>
#include <stdint.h>
int main(void) {
uint16_t crc = 0xBEEF;
char message[] = "Blah blah.";
char output[100]; // Make sure it has enough space for both,
//the string and the CRC (and the null terminator).
sprintf(output, "%s,%04X\r", message, crc);
// For extra memory safety use
// snprintf(output, sizeof output, "%s,%04X\r", message, crc);
printf("%s\n", output);
return 0;
}
根据要求,您可能需要交换 CRC 的字节..
将 CRC 分成两个字节。
unsigned high = crc >> 8, low = crc & 0xff;
。然后按偏移量将它们直接插入字符串中,例如str[17] = low; str[18] = high;
(无论正确的索引是什么),或者如果您使用 printf()
来制作字符串,那么就像 printf("... %c%c\r", ..., low, high);
.