C#实现E2E CRC-8算法
时间: 2023-07-12 09:13:56 浏览: 329
以下是C#实现E2E CRC-8算法的代码:
```csharp
public class Crc8E2E
{
private const byte _generator = 0x1D;
private byte[] _table = new byte[256];
public byte ComputeChecksum(byte[] bytes)
{
byte crc = 0x00;
for (int i = 0; i < bytes.Length; ++i)
{
byte index = (byte)(crc ^ bytes[i]);
crc = _table[index];
}
return crc;
}
public byte[] ComputeChecksumBytes(byte[] bytes)
{
byte crc = ComputeChecksum(bytes);
return new byte[] { crc };
}
public Crc8E2E()
{
for (int i = 0; i < 256; ++i)
{
byte crc = (byte)i;
for (int j = 0; j < 8; ++j)
{
if ((crc & 0x80) != 0)
{
crc = (byte)((crc << 1) ^ _generator);
}
else
{
crc <<= 1;
}
}
_table[i] = crc;
}
}
}
```
使用方法:
```csharp
var crc8 = new Crc8E2E();
byte[] bytes = { 0x12, 0x34, 0x56 };
byte checksum = crc8.ComputeChecksum(bytes);
```
其中 `bytes` 是待计算校验值的字节数组,`checksum` 是计算得到的校验值。
阅读全文