Algoritmo CRC16-BUYPASS

O CRC (Cyclic Redundancy Check) é um código corretor de erro usado comumente em redes de comunicações digitais e também em dispositivos de armazenamento para detectar mudanças acidentais nos dados brutos. Blocos de dados que são processados por esses sistemas recebem um pequeno valor que é calculado baseado no resto da divisão polinomial de seus conteúdos. Na recepção/leitura dos dados, o cálculo deve ser repetido e, caso o valor de checagem calculado não seja idêntico ao que foi transmitido/gravado junto com a informação, uma ação corretiva deverá se adotada quanto à provável corrupção dos dados.

Os CRCs são assim chamados devido ao fato de o valor usado para a checagem ser uma redundância, ou seja, um artefato expande o tamanho da mensagem sem, porém, adicionar informação. O algoritmo usado na sua concepção é baseado em códigos cíclicos. CRCs são populares pois são simples de implementar em hardware, fáceis de analisar matematicamente e particularmente bons na detecção de erros comuns causados pela transmissão de dados em canais ruidosos. Devido ao fato de seu valor de conferência/checagem possuir um valor fixo, a função que gera o CRC é ocasionalmente aplicada para o cálculo de resumos (hashs).

Entrada

A entrada é composta por uma única linha contendo uma string de, no máximo, 16 caracteres.

Saída

Veja os exemplos a seguir.

Exemplo de Entrada 1

Alo mundo

Exemplo de Saída 1

CRC16-BUYPASS: 0x7FBB

Exemplo de Entrada 2

a123456b

Exemplo de Saída 2

CRC16-BUYPASS: 0xFDBB

Algumas dicas úteis