C# CRC-16(0xFFFF)的计算

C# CRC-16(0xFFFF)的计算,c#,crc16,C#,Crc16,我有18005个十六进制帧的数据,我想同时计算所有帧的crc-16(0xffff),然后追加。您的crc没有充分指定。您是否试图与使用16位CRC的协议兼容?如果是这样,您需要找出该CRC的参数。你可以找到。您需要的参数可能是其中之一,也可能是另一组参数 根本不清楚“(0xffff)”在您的名字中的含义。初始值是多少?最终的独家代理?空字符串的CRC?还有别的吗 不清楚“同时”计算所有帧的CRC是什么意思。你为什么同时说 附加CRC时,还需要知道附加CRC的位或字节顺序。两字节CRC可以按小或大

我有18005个十六进制帧的数据,我想同时计算所有帧的
crc-16(0xffff)
,然后追加。

您的crc没有充分指定。您是否试图与使用16位CRC的协议兼容?如果是这样,您需要找出该CRC的参数。你可以找到。您需要的参数可能是其中之一,也可能是另一组参数

根本不清楚“(0xffff)”在您的名字中的含义。初始值是多少?最终的独家代理?空字符串的CRC?还有别的吗

不清楚“同时”计算所有帧的CRC是什么意思。你为什么同时说

附加CRC时,还需要知道附加CRC的位或字节顺序。两字节CRC可以按小或大端顺序追加

更新:

根据注释中的示例CRC,所需的CRC-16为。您可以使用生成计算此CRC的C代码。它将以不同的速度和复杂度生成逐位、逐字节和逐字代码。生成的逐位例程为:

#include <stdint.h>

unsigned crc16ccitt_false_bit(unsigned crc, void const *data, size_t len) {
    if (data == NULL)
        return 0xffff;
    while (len--) {
        crc ^= (unsigned)(*(unsigned char const *)data++) << 8;
        for (unsigned k = 0; k < 8; k++)
            crc = crc & 0x8000 ? (crc << 1) ^ 0x1021 : crc << 1;
    }
    crc &= 0xffff;
    return crc;
}
#包括
无符号crc16ccitt\u假位(无符号crc、无效常数*数据、大小长度){
如果(数据==NULL)
返回0xffff;
而(len--){

crc^=(无符号)(*(无符号字符常量*)数据++)欢迎来到Stack Overflow!询问完整代码的问题不在Stack Overflow的主题中。您甚至还没有指定要使用的语言,因此不希望任何人能够有效地回答这个问题。我使用c语言先生,我有18005个十六进制帧的数据。一个示例帧是giv如上文所述:“AA01004AFF025773442920000000014048A76F64BE211C4648A76F64C0101C5648A76F64C08B13744154CBDBFA2073444154CBDC0570E2C44154CBDC0AE8C5F4270000B48B4296”是我的示例帧。我还有18004个这样的帧,我必须计算crc-16位并将其附加到所有帧(在帧的末尾)同时。我的每个帧大小为72字节,我必须再附加两个字节的crc,其初始值为0xFFFF?有许多可能的crc-16。哪一个?您有一个具有正确crc的帧示例吗?这是我的示例帧:“AA01004AFF025773442920000000014048A76F64BE211C4648A76F64C0101C5648A76F64C08B13744154CBDBFA2073444154CBDC05070E2C44154CBDC0AE8C5F42700000B48B44296”。其正确的crc ans为C2F0。此crc由以下网站引用:ammertbies.nl/comm/info/crc-calculation.html