4 ビット巡回冗長検査 (CRC-4-ITU) の C# 実装をネットで検索してきましたが、これまでのところ成功していません。
CRC-4-ITU のリファレンス実装を教えてくれる人はいますか? 標準多項式がある場合は、標準多項式を使用することをお勧めします(多項式の定義を見つけることなく、ウィキペディアがCRC4仕様として指摘している仕様を読みました)。
また、CRC4 の実装を検証するための何らかのテスト スイートまたはテスト データを提供していただければ幸いです。
ありがとう!
4 ビット巡回冗長検査 (CRC-4-ITU) の C# 実装をネットで検索してきましたが、これまでのところ成功していません。
CRC-4-ITU のリファレンス実装を教えてくれる人はいますか? 標準多項式がある場合は、標準多項式を使用することをお勧めします(多項式の定義を見つけることなく、ウィキペディアが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アルゴリズムについて知りたいと思っていたが、理解の誤りが検出されるのではないかと恐れて尋ねることを恐れていたすべて.」