1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| package rfid
|
| func CRC16XMODEM(data []byte) uint16 {
| var crc uint16 = 0x0000 // 初始化 CRC 值
| polynomial := uint16(0x1021)
|
| for _, b := range data {
| crc ^= uint16(b) << 8
| for i := 0; i < 8; i++ {
| if crc&0x8000 != 0 {
| crc = (crc << 1) ^ polynomial
| } else {
| crc <<= 1
| }
| }
| }
| return crc
| }
|
|