C#使用字节数组输入生成crc8字节方法

时间:2018-07-11 13:29:51

标签: c# crc

现在我有以下代码来生成CRC-16(Modbus)。我对CRC的概念很陌生,我需要制作一个CRC-8。可以修改此代码以生成CRC-8吗?我有for循环,起始于import dataclasses, json class EnhancedJSONEncoder(json.JSONEncoder): def default(self, o): if dataclasses.is_dataclass(o): return dataclasses.asdict(o) return super().default(o) json.dumps(foo, cls=EnhancedJSONEncoder) ,结束于int = 1;,因为我忽略了第一个和最后一个字节。

i<tembByteList.Count - 1;

1 个答案:

答案 0 :(得分:1)

好的。只需将0xa001替换为0xe5,并将初始化初始化为零(ushort reg_crc = 0;)。这将生成蓝牙CRC-8。使用0x8c将生成Maxim CRC-8。当然,您只需要在消息末尾插入一个字节即可。

如果您希望使用全1初始化的CRC(对消息中的初始字符串零敏感),则可以使用ROHC CRC-8,将0xe0用于多项式,然后将reg_crc初始化为0xff

顺便说一句,if语句可以由三元运算符代替,我认为它更易读:

    reg_crc = (reg_crc & 1) != 0 ? (reg_crc >> 1) ^ POLY : reg_crc >> 1;