我需要把这段C语言写的函数转化为vb6.0的函数,请朋友们帮忙了,谢谢//例如:求三个字节0xAA  0xAA  0xAA(16进制)的CRC校验码
//字符指针ptr指向此串,count是指针ptr的长度,此时为3, 
//求得的CRC校验码是0x9C 0x48
int calcrc( char *ptr, int count )     //求CRC的calcrc函数,ptr是指向字符数组的指针
{                             //count是待求CRC校验码的字节数
   int  i;                         
unsigned int crc;                 //要返回的CRC,16位的
unsigned char crc1,crc2,crc3;      //指向数组中连续的三个字符(byte),8位的
ptr[count] = 0x00;               //计算CRC串的末尾添加两个字节的0x00
ptr[count+1] = 0x00;
crc1 = *ptr++ ;
crc2 = *ptr++ ;
while (--count >= 0) {
    crc3 = *ptr++ ;         //在while中补充下一个字符(8个bit)
       for (i = 0; i < 8; ++i)     
{
           if (crc1 & 0x80)    //判断crc1高位是否为1
{
               crc1 = crc1 << 1;   //移出高位
if(crc2 & 0x80)    //判断crc2高位是否为1
{
crc1=crc1 | 0x01;  //crc1低位由0变1
}
crc2 = crc2 << 1;      //crc2移出高位
if(crc3 & 0x80)       //判断crc3高位是否为1
{
crc2=crc2 | 0x01;  //crc2低位由0变1
}
crc3=crc3<<1;       //crc3移出高位
crc1=crc1 ^ 0x10;    //前8bit与0x10异或
crc2=crc2 ^ 0x21;   //后8bit与0x21异或
}
else                  //如果crc1高位不为1,只移位不做异或
{
crc1 = crc1 << 1;
if(crc2 & 0x80)
{
crc1=crc1 | 0x01;
}
crc2 = crc2 << 1;
if(crc3 & 0x80)
{
crc2=crc2 | 0x01;
}
crc3=crc3<<1;
}
}//for  
    }//while
crc=(crc1<<8)+crc2;              //返回的16位的crc校验码
return (crc);
}//calcrc