Domanda

Ho una situazione ipotetica di invio di unità di dati, ognuno dei mille byte. tasso di fallimento è rara, ma quando un errore si verifica è meno probabile che sia un singolo errore di bit e più probabile che sia un errore di pochi bit di fila.

In un primo momento ho pensato di utilizzare un checksum, ma a quanto pare che può perdere errori di bit più grandi di un singolo bit. Un controllo di parità non funziona nemmeno così CRC potrebbe essere l'opzione migliore.

sta usando una Cyclic Redundancy Check su un efficiente migliaia di byte? O ci sono altri metodi che funzionano meglio?

È stato utile?

Soluzione

Controlli di ridondanza ciclico (CRC) sono popolari specificamente a causa della loro efficacia nel rilevare molteplici errori di bit con una precisione.

Ci sono diversi modelli per generare polinomi CRC in cui il trade-off è la precisione vs complessità computazionale. Nel tuo caso, si può scegliere quello "più veloce" che soddisfi le vostre esigenze per la precisione.

Si potrebbe desiderare di iniziare con questo articolo di Wikipedia sul Cyclic Redundancy Check .

Altri suggerimenti

CRC è coperto in un altro domanda qui
Quando è CRC più appropriato da usare rispetto MD5 / SHA1?
È adatto a rilevare gli errori casuali e facile da implementare.

E 'normale usare un CRC. Io non sono certo quello che si intende per 'efficienza', ma credo che a volte il CRC è implementato in hardware (ad esempio, sulla scheda Ethernet). In caso contrario, si possono trovare le implementazioni 'ottimizzati' (utilizzando una tabella di ricerca).

Quanto sono grandi i tuoi settori del disco? Probabilmente almeno 512 byte. E CRC è uno schema ormai consolidata per ECC disk-livello hardware.

Gli algoritmi polinomiali magazzino CRC sono abbastanza efficaci per un piccolo numero di errori di bit. La precisione esatta è matematicamente calcolabile. CRC è anche molto efficace per fare in hardware in cui un numero relativamente piccolo di cancelli e registri a scorrimento in grado di gestire il lavoro in tempo reale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top