위키피디아의 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 알고리즘에 대해 알고 싶었지만, 두려움을 요청하는 두려워 모든 것을 이해 상 오류가있을 수 있습니다. "
예수 그리스도는 무서워합니다. 이것은 "CRC-4-ITU"에 대한 Google의 6 번째 검색 결과이며 게시 된 지 7 분 후에 색인이 생성됩니다. –
Google과 SO에는 일종의 계약이 있습니다. 단순히 SiteMap 파일 일 수 있으며 SO에 높은 GoogleRank가 있으므로 MyLittleDorkySite.com보다 더 중요합니다. –