哪位高手帮我把下面这段代码改成c#的uint32_t crc16_table[256]; // CRC 表 // 构造 16 位 CRC 表
void build_crc16_table(uint16_t crc16_cn)
{
uint16_t i;
uint16_t j;
uint16_t data;
uint16_t accum; for (i = 0; i < 256; i++) {
data = (uint16_t)( i << 8 );
accum = 0;
for (j = 0; j < 8; j++) {
if ( ( data ^ accum ) & 0x8000 )
accum = ( accum << 1 ) ^ crc16_cn;
else
accum <<= 1;
data <<= 1;
}
crc16_table[i] = (uint32_t)accum;
}
} // 计算 16 位 CRC 值,CRC-16 或 CRC-CCITT
uint16_t get_crc16( uint8_t *data, uint32_t size)
{
uint32_t i;
uint16_t accum = 0x0;//init //build_CRC16_table(CRC16_cn); // or cnCRC_CCITT
for ( i = 0; i < size;)
accum = (accum << 8) ^ (uint16_t)crc16_table[(accum >> 8) ^ data[i++]];
return accum;
}
void build_crc16_table(uint16_t crc16_cn)
{
uint16_t i;
uint16_t j;
uint16_t data;
uint16_t accum; for (i = 0; i < 256; i++) {
data = (uint16_t)( i << 8 );
accum = 0;
for (j = 0; j < 8; j++) {
if ( ( data ^ accum ) & 0x8000 )
accum = ( accum << 1 ) ^ crc16_cn;
else
accum <<= 1;
data <<= 1;
}
crc16_table[i] = (uint32_t)accum;
}
} // 计算 16 位 CRC 值,CRC-16 或 CRC-CCITT
uint16_t get_crc16( uint8_t *data, uint32_t size)
{
uint32_t i;
uint16_t accum = 0x0;//init //build_CRC16_table(CRC16_cn); // or cnCRC_CCITT
for ( i = 0; i < size;)
accum = (accum << 8) ^ (uint16_t)crc16_table[(accum >> 8) ^ data[i++]];
return accum;
}
private void build_crc16_table(int crc16_cn)
{
int i;
int j;
int data;
int accum; for (i = 0; i < 256; i++)
{
data = (i << 8);
accum = 0;
for (j = 0; j < 8; j++)
{
if (((data ^ accum) & 0x8000) !=0)
accum = (accum << 1) ^ crc16_cn;
else
accum <<= 1;
data <<= 1;
}
crc16_table[i] = (uint)accum;
}
} // 计算 16 位 CRC 值,CRC-16 或 CRC-CCITT
int get_crc16(byte[] data, uint size)
{
uint i;
int accum = 0x0;//init //build_CRC16_table(CRC16_cn); // or cnCRC_CCITT
for (i = 0; i < size; )
accum = (accum << 8) ^ (int)crc16_table[(accum >> 8) ^ data[i++]];
return accum;
}