// hello package datastruct //HJ212 计算crc func CalCRC16HJ212(data []byte) uint16 { var ( crc uint16 = 0xFFFF inum uint16 = 0 ) length := len(data) for i := 0; i < length; i++ { inum = uint16(data[i]) crc = (crc >> 8) & 0x00FF crc = crc ^ inum for j := 0; j < 8; j++ { flag := crc % 2 crc = crc >> 1 if flag == 1 { crc = crc ^ 0xA001 } } } return crc } func CalCRC16ModbusRTU(data []byte) uint16 { var ( crc uint16 = 0xFFFF inum uint16 = 0 ) length := len(data) for i := 0; i < length; i++ { inum = uint16(data[i]) //crc = (crc >> 8) & 0x00FF crc ^= inum & 0x00FF for j := 0; j < 8; j++ { flag := crc % 2 crc = crc >> 1 if flag == 1 { crc = crc ^ 0xA001 } } } return crc }