unsigned short CRC16 ( puchMsg, usDataLen ) 
unsigned char *puchMsg ; 
unsigned short usDataLen ; 
{
unsigned char uchCRCHi = 0xFF ; 
unsigned char uchCRCLo = 0xFF ; 
unsigned uIndex ; 
while (usDataLen--) 
{
uIndex = uchCRCLo ^ *puchMsg++ ; 
uchCRCLo = uchCRCHi ^ auchCRCHi[uIndex] ;
uchCRCHi = auchCRCLo[uIndex] ;
}
return (uchCRCHi << 8 | uchCRCLo) ;
}static unsigned char auchCRCHi[] = { 0x00, 0xC1, 0x81, 0x40, 0x01 };以上代码为C++中编写,现在我要拿到C#中用,该如何转换??  需要改哪些东西?