pasando qt valor hexadecimal como un puntero y para acceder a él

votos
0

En el siguiente programa, estoy tratando de pasar valor hexadecimal a CRC16 función y hacer algunos cálculos sobre el mismo. Sin embargo, en la línea (cc = 0xff & * ptr;) en lugar de AND sólo se utiliza el valor total de ptr el primer valor. ¿Puede alguien señalar el error que estoy haciendo aquí. Gracias.

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());
}
Publicado el 19/09/2018 a las 17:05
fuente por usuario
En otros idiomas...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more