Abilitare JavaScript per vedere questo sito.

Questa funzione, dato un buffer di dati (sequenza di byte), esegue il calcolo del CRC16 in base al polinomio e al valore CRC iniziale specificati.

Sintassi

u16 crc16_le (string strData, i32 nCount [, u16 initVal=0xFFFF] [, u16 polin=0xA001])

strData

Stringa oppure array, dei quali si vuole calcolare il CRC16.

Il calcolo del CRC avviene comunque a byte, indipendentemente dal tipo specificato per la variabile data.

nCount

È il numero di byte di strData su cui eseguire il calcolo.

initVal

Valore iniziale del CRC. (opzionale, default 0xFFFF)

polin

Valore del polinomio usato nel calcolo del CRC. (opzionale, default 0xA001)

Principali polinomi utilizzati dai diversi CRC:

Polinomio

Valore polin

Normal original

0x8005

Normal reversed

0xA001

Koopman original

0xC002

Normal reciprocal

0x4003

Reversed reciprocal

0xC002

Koopman reciprocal

0xA001

Casi frequenti:

CRC più usati

Rappresentazione

NORMALE

REVERSE

RECIPROCO

Usato da

CRC-16-CCITT

x16 + x12 + x5 + 1

0x1021

0x8408

0x0811

ModemX25, Bluetooth, PPP

CRC-16-IBM

x16 + x15 + x2 + 1

0x8005

0xa001

0x4003

USB, MODBUS, altri

Risultato

Rende il valore del CRC calcolato.

Validità

Rule, Task.

Note

Chiamando ripetutamente la funzione con valore iniziale uguale al valore del CRC calcolato, si può eseguire il calcolo incrementale del CRC di un buffer di lunghezza qualsiasi.

NOTA: La precedente funzione crc16_ero (Little Endian con polinomio iniziale non modificabile 0xA001) è deprecata, ma rimane per compatibilità.

Il calcolo viene effettuato secondo l'algoritmo Little Endian.

 

  

Keyboard Navigation

F7 for caret browsing
Hold ALT and press letter

This Info: ALT+q
Page Header: ALT+h
Topic Header: ALT+t
Topic Body: ALT+b
Contents: ALT+c
Search: ALT+s
Exit Menu/Up: ESC