2016-08-01 52 views
1

我想使用qchecksum而不是boost crc在數據包上使用crc16,但我無法得到相同的結果。我如何在qt中使用crc16校驗和boost crc?使用qchecksum而不是提升crc16

boost::crc<16, 0x1040, 0, 0, false, false>(packet, 4) 
+0

您能不能告訴我們,你試圖用'QChecksum'行? –

+0

@Torbjörn,假設數據包等於「0x00000000」,則升壓crc等於零,但qt crc等於64734 – abdolahS

+0

沒有一個16位CRC多項式,並且沒有一種方法可以使用一個多項式來計算CRC。爲什麼你認爲boost和Qt使用相同的多項式,具有相同的參數? –

回答

3

有許多CRC-16多項式和參數集。 qchecksum只是其中一個的實現。所以不,你不能讓qchecksum匹配任意提升校驗和。但是如果這是一個選項,你可以調整提升校驗和參數來匹配qchecksum。在qchecksum源

尋找(與參數播放)這似乎是這一個:

boost::crc<16, 0x1021, 0xFFFF, 0xFFFF, true, true>