gpt4 book ai didi

c# - C# 中的 CRC-4 实现

转载 作者:行者123 更新时间:2023-11-30 16:35:27 25 4
gpt4 key购买 nike

我一直在网上搜索 4 位循环冗余校验 (CRC-4-ITU) 的 C# 实现,但到目前为止我一直没有成功。

有没有人能给我一个 CRC-4-ITU 的引用实现?如果有标准多项式,最好使用标准多项式(我已经阅读了规范 pointed to by wikipedia 作为 CRC4 规范,但没有找到多项式的定义)。

我也非常感谢某种测试套件或测试数据来验证 CRC4 实现。

谢谢!

最佳答案

Cyclic Redundancy Check维基百科上的文章说多项式是 x^4 + x + 1。对于如何计算校验和也有很好的描述。

这是 CRC16 的算法。我知道这不是您所要求的,但将其调整为 4 位应该相对简单。

   public ushort calculate(byte[] bytes)
{
int crc = 0xFFFF; // initial value
// loop, calculating CRC for each byte of the string
for (int byteIndex = 0; byteIndex < bytes.Length; byteIndex++)
{
ushort bit = 0x80; // initialize bit currently being tested
for (int bitIndex = 0; bitIndex < 8; bitIndex++)
{
bool xorFlag = ((crc & 0x8000) == 0x8000);
crc <<= 1;
if (((bytes[byteIndex] & bit) ^ (ushort)0xff) != (ushort)0xff)
{
crc = crc + 1;
}
if (xorFlag)
{
crc = crc ^ 0x1021;
}
bit >>= 1;
}
}
return (ushort)crc;
}

http://www.experts-exchange.com/Programming/Languages/C_Sharp/Q_24775723.html

此外,还有计算校验和的指南:

http://www.ross.net/crc/download/crc_v3.txt

“您想知道的关于 CRC 算法的一切,但又害怕担心会发现您理解中的错误。”

关于c# - C# 中的 CRC-4 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1834541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com