flutter实现CRC16 MODBUS校验算法
最近开发过程中遇到ModelBus的CRC校验位计算,弄了好久才出来的方法
String getCrc(String data) { int crcValue = 0xFFFF; List<int> dataList = Utils.formatSentData(data); for (int i = 0; i < dataList.length; i++) { crcValue ^= dataList[i]; for (int j = 0; j < 8; j++) { int isCrc = crcValue & 0x0001; if (isCrc != 0) { crcValue >>= 1; crcValue ^= 0xA001; } else { crcValue >>= 1; } } } String crcString = crcValue.toRadixString(16); List<String> crcArr = []; crcArr.add(crcString.substring(2, 4)); crcArr.add(crcString.substring(0, 2)); return (crcArr.join('')); }

浙公网安备 33010602011771号