CRC16 - Polynom 0x8005
Relevant links:
http://www.summitinstruments.com/knowledge_center/pdf/TN410.pdf
http://www.lammertbies.nl/comm/info/crc-calculation.html?crc=12345678987...
| This is sample code. Add error handling and adjust to your requirements as necessary. |
* The code below seems to produce correct result but it hasn't been tested thoroughly. * Polynom = 0x8005 #DEFINE CRC16 0xA001 * Build CRC table DIMENSION laCrc[256] FOR i=0 TO 255 lnData = i lnCrc = 0 FOR j=0 TO 7 IF BITAND(BITXOR(lnData, lnCrc),1) > 0 lnCrc = BITXOR(BITRSHIFT(lnCrc,1), CRC16) ELSE lnCrc = BITRSHIFT(lnCrc,1) ENDIF lnData = BITRSHIFT(lnData,1) ENDFOR *? i, TRANSFORM(lnCrc, "@0") laCrc[i+1] = lnCrc ENDFOR * Calculate CRC16 lcStr = "1234567898765421" lnCrc = 0 FOR i=1 TO LEN(lcStr) lnByte = ASC(SUBSTR(lcStr,i,1)) lnCrc = BITXOR( BITRSHIFT(lnCrc,8), ; laCrc[BITXOR(BITAND(lnCrc, 0xFF), lnByte)+1]) ENDFOR ? TRANSFORM(lnCrc, "@0")
Recent comments
1 week 4 days ago
4 weeks 20 hours ago
4 weeks 23 hours ago
4 weeks 1 day ago
4 weeks 1 day ago
5 weeks 2 days ago
8 weeks 2 days ago
10 weeks 4 days ago
12 weeks 2 days ago
12 weeks 3 days ago