| | |
| | | val list = listOf(1, 2, 3, 4, 5, 0) |
| | | println(list.average()) |
| | | } |
| | | |
| | | @Test |
| | | fun get_crc16(){ |
| | | val dataSegment = "QN=20210713115502858;ST=22;CN=2011;PW=555555;MN=FYHB0MH0300045;Flag=1;CP=&&DataTime=20210713115000;a34001-Avg=0.025,a34001-CPM=5.9,a34001-Flag=N;a50001-Avg=0.0,a50001-Flag=D;a01001-Avg=33.0,a01001-Flag=N;a01002-Avg=68.2,a01002-Flag=N;a01007-Avg=0.0,a01007-Flag=N;a01008-Avg=0.0,a01008-Flag=N;Period=5;Scale=0.0;SelfTemp=0.0;SelfHum=0.0;IsReplacement=N&&" |
| | | var CRC = 0x0000ffff |
| | | val POLYNOMIAL = 0x0000a001 |
| | | var i: Int |
| | | var j: Int |
| | | val bufData = dataSegment.toByteArray() |
| | | val buflen = bufData.size |
| | | if (buflen == 0) { |
| | | return |
| | | } |
| | | i = 0 |
| | | while (i < buflen) { |
| | | CRC = CRC xor (bufData[i].toInt() and 0x000000ff) |
| | | j = 0 |
| | | while (j < 8) { |
| | | if (CRC and 0x00000001 != 0) { |
| | | CRC = CRC shr 1 |
| | | CRC = CRC xor POLYNOMIAL |
| | | } else { |
| | | CRC = CRC shr 1 |
| | | } |
| | | j++ |
| | | } |
| | | i++ |
| | | } |
| | | var strCRC = Integer.toHexString(CRC).toString() |
| | | if (strCRC.length < 4) { |
| | | strCRC += "0" |
| | | } |
| | | println(strCRC) |
| | | } |
| | | } |