c# - C to C# CRC计算转换器

标签 c# c crc crc16

我有一个 C 代码 我需要用 c# 重写它

但是在C#中没有指针

我怎样才能进行这种转换?

谢谢大家的回答

unsigned int CCITT_CRC_TAB[256] = {         // CCITT CRC-16 polynomial table
0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7,
};
unsigned int CalcCrc16( unsigned int* ptr_res , unsigned char * 
BufStart,unsigned char BufLen)
{
 unsigned int CRCres,V1; // 16 bit var
 unsigned char * BufPtr;  // 8 bit var

    BufPtr = BufStart;
    for(CRCres = 0 ;BufPtr < (BufStart + BufLen) ;BufPtr++)
  {
    V1 = (unsigned int)((CRCres>>8)^ *BufPtr);
    CRCres  = (unsigned int)((CRCres>>8)^ CCITT_CRC_TAB[V1]);
  }

*ptr_res = CRCres;
}

最佳答案

C# 方式(假设调用者也将被迁移或已经准备好 C#):

uint CalcCrc16(byte[] BufStart, byte BufLen)
{
    uint CRCres = 0, V1 = 0; // 16 bit var
    for(int i = 0 ; i < BufLen; i++)
    {
        V1 = (uint)((CRCres>>8) ^ BufStart[i]);
        CRCres  = (uint)((CRCres>>8)^ CCITT_CRC_TAB[V1]);
    }
    return CRCres;
}

关于c# - C to C# CRC计算转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50896487/

相关文章:

c# - 异常消息是否应该全局化

c# - 休息 API : Passing Colon (:) in url using attribute Routing doesn't work

c# - 如何使用 Rider 忽略用于 dotnet 核心开发的所有敏感文件或缓存文件?

c - 在 C 中,函数是否可以返回指向自身的指针?

c - 使用 union 时将标签字段值分配给结构

c - 如何解析 MDNS 响应?

crc - 证明 CRC 的线性

c# - 在 ASP.NET Core 3.0 Preview 5 或更高版本中配置 AutoFac

java - 太阳.awt.image.PNGImageDecoder$PNGException : crc corruption