谁能向我解释这个程序的工作原理?

时间:2018-09-18 06:29:09

标签: c

我在页面中看到了此程序,我想在我的文档中使用它。尤其是在while循环级别

unsigned char calculation(const unsigned char *string)
{
    static uint8_t Value;
    const   uint8_t StartValue = 0;
    Value = StartValue;
    char CRVT[2] = "\r\v";

    strcat((char *)string, CRVT);
    while(*string)
    {
        Value = crc8table[Value ^ *string];
        string++;
    }
    return Value;
}

1 个答案:

答案 0 :(得分:2)

发布的代码有很多错误,无法按预期工作。应该在行尾添加CR + VT,CR表示回车,VT表示垂直制表符。

但是,行char CRVT[2] = "\r\v";没有为空终止符分配空间,因此调用strcat时,程序将崩溃并燃烧。

const char*投射到char*并写到它是一个非常值得商practice的做法,并且可能会导致定义不明确的行为。

对于Value = crc8table[Value ^ *string];,它只是一些CRC表查询,带有针对某些CRC-8算法的预先计算的FCS(帧校验序列)值。 ^是XOR运算符,在计算CRC时使用。任何人都在猜测,作为查表的一部分,此代码中的功能。没有任何意义。

static的{​​{1}}限定符没有任何作用,因为该变量在运行时被重置。

总体而言,我不会使用此代码,因为它的质量很低。它不是由专业人士撰写的,而是一些初学者撰写的。