Qt передает шестнадцатеричное значение в качестве указателя и получает к нему доступ - PullRequest
0 голосов
/ 19 сентября 2018

В приведенной ниже программе я пытаюсь передать шестнадцатеричное значение в функцию CRC16 и выполнить некоторые вычисления.Но в строке (cc = 0xff & * ptr;) вместо ANDing всего значения ptr используется только первое значение.Можно ли указать на ошибку, которую я здесь совершаю.Спасибо.

unsigned int crcValues[256];

unsigned int CRC16(unsigned int crc ,unsigned char *ptr)
{
    unsigned char tmp;
    unsigned char cc;
    cc = 0xff & ((unsigned int)*ptr);
    tmp = ((crc >> 8) ^ cc);

    crc = (crc << 8) ^ crcValues[tmp & 0xff];
    crc = crc & 0xffff;
    return crc;

}

void CRCCorrectionCode()
{
    unsigned int crc;
    int i = 0;
    int j;

    for(int c = 0;c < 256; c++)
    {
        crc = 0;
        j = c;
        c = c << 8;
        for(int j = 0;j < 8;j++){
            if((crc ^ c) & 0x8000)
                crc = (crc << 1) ^ poly;
            else
                crc = crc << 1;
            c = c << 1;
        }
        c = j;
        crcValues[i] = crc;
        i++;
    }
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    CRCCorrectionCode();
    QString tmpString = QString("0x%1").arg(254, 2, 16, QLatin1Char('0'));;
    int crc = 0;
    CRC16(crc,(unsigned char* )tmpString.toLatin1().data());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...