现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

Qt 下CRC 检验程序

2015-12-09 23:47 工业·编程 ⁄ 共 455字 ⁄ 字号 暂无评论
QByteArray MainWindow::gemfieldCRC(QByteArray gemfield)
{
        QByteArray temp;
        unsigned short crc=0xffff;
        unsigned short a,j,k;

    for(a=0;a<gemfield.size();a++)
    {
        //crc和第a个字节里的值异或,新值赋给crc.
//        注意gemfield[a]在转换为int型时是有符号的,因此,我们在其值大于7F时,需要做相应的转换处理。你懂的。
        crc =crc ^ ( (int)gemfield[a]>=0 ? gemfield[a] : (gemfield[a]+256) );
        for(j=0;j<8;j++)
        {
            k=crc & 01;//看crc的最低位是不是0,如果不是0,就与0xA001异或。
            crc=crc >> 1;
            if (k==0) continue;
            crc =crc ^ 0xA001;
        }
    }
    temp[1] = crc/256;
    temp[0] = crc%256;
    return temp;//将整数转换为QByteArray返回。
}

给我留言

留言无头像?