Important: Please read the Qt Code of Conduct -

Qt checksum

  • I'am trying to use the cecksum of QT - "qchecksum":
    According to the document, this function use CRC-16-CCITT algorithm.
    but when I use this function, I don't get the correct crc.

    for example:
    char str[]= "123456789";
    quint16 qchecksum = qChecksum(str,9);

    qchecksum = 0x906E.

    but the correct checksum shold be 0x31C3 according to some calculator of checksum and other documents.
    does anyone know how to use this function?

    [EDIT: fixed link, Volker]

  • If you look at "Appendix A": of you can see a map of checksums using various parameters for the CRC algorithms.

    0x31C3 is the result of using an initial value of 0x0000, a final XOR with 0x0000, a polynom of 0x1021 and not using reflection - aka XMODEM

    0x906E, the Qt result, is for using an initial value of 0xFFFF, a final XOR with 0xFFFF, polynom 0x1021 and using reflection - aka X.25

    So, it's extremely important to use the very same parameters to calculate the checksum.

Log in to reply