如何把以下CRC32的代码改成CRC16,CRC12,CRC4 ?急~~

allmian 2006-05-15 09:01:09
以下是运行正确的CRC32代码,如何改成CRC16,CRC12,CRC4 的?望各位帮忙了,感激不尽~~~


using System;
using System.IO;

namespace MyCRC
{

public class CRC32
{
private UInt32[] crc32Table;
private const int BUFFER_SIZE = 1024;

public UInt32 GetCrc32(System.IO.Stream stream)
{
unchecked
{
UInt32 crc32Result;
crc32Result = 0xFFFFFFFF;
byte[] buffer = new byte[BUFFER_SIZE];
int readSize = BUFFER_SIZE;

int count = stream.Read(buffer, 0, readSize);
while (count > 0)
{
for (int i = 0; i < count; i++)
{
crc32Result = ((crc32Result) >> 8) ^ crc32Table[(buffer[i]) ^ ((crc32Result) & 0x000000FF)];
}
count = stream.Read(buffer, 0, readSize);
}

return ~crc32Result;
}
}

public CRC32()
{
unchecked
{

UInt32 dwPolynomial = 0xEDB88320;
UInt32 i, j;

crc32Table = new UInt32[256];

UInt32 dwCrc;
for(i = 0; i < 256; i++)
{
dwCrc = i;
for(j = 8; j > 0; j--)
{
if ((dwCrc & 1)==1)
{
dwCrc = (dwCrc >> 1) ^ dwPolynomial;
}
else
{
dwCrc >>= 1;
}

}
crc32Table[i] = dwCrc;
}
}
}
}
}
...全文
457 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
allmian 2006-05-16
  • 打赏
  • 举报
回复
up
allmian 2006-05-15
  • 打赏
  • 举报
回复
就要断网了,顶上去,希望明天有惊喜……
allmian 2006-05-15
  • 打赏
  • 举报
回复
多谢 零下一度 ,上面那个我曾经看过,但总觉得那个写得太麻烦,看不懂也不知道怎么调用,这个CRC32是我从外国网站上下的,觉得是最简洁的CRC32程序了,我对C#不是很熟悉,只是现在要做毕业设计……
代码蜗牛sky 2006-05-15
  • 打赏
  • 举报
回复
http://canny.cnblogs.com/archive/2005/11/30/82470.html
allmian 2006-05-15
  • 打赏
  • 举报
回复
有熟悉CRC的朋友吗,谁可以帮我呀?
allmian 2006-05-15
  • 打赏
  • 举报
回复
CRC4生成多项式:G(X)=X^4+X+1 =1011
CRC12 :G(X)=X^12+X^11+X3^+X+1 = Ox80B ? //这个未验证
CRC16: G(X)=X^16+X^12+X^2+1 = 0x1005

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧