70,037
社区成员
发帖
与我相关
我的任务
分享
#include <windows.h>
/*CRC-16效验函数
多项式为X^16+X^15+X^2+1
CRC_RESULT为全局变量,是计算结果结果,可能有上次计算的结果在
*/
extern "C" _declspec(dllexport) unsigned int CRC_16(unsigned char *str, int lenth)
{
unsigned char k;
unsigned long temp=0;
while(lenth--)
{
for(k = 0x80; k != 0; k = k>>1)
{
temp = temp * 2;
if((temp & 0x10000) != 0)
temp = temp ^ 0x18005;
if((*str & k) != 0)
temp = temp ^ (0x10000 ^ 0x18005);
}
str++;
}
return temp;
}
BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, void* lpReserved)
{
HANDLE g_hModule;
switch(dwReason)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
}
return true;
}
编译,假设用VC++:
cl /O2 /LD crc16.cpp