| package com.dayu.henanlibrary.socketBean; | 
|   | 
| import com.dayu.baselibrary.tools.HexUtil; | 
| import com.dayu.baselibrary.utils.CRC8; | 
| import com.dayu.henanlibrary.net.IMessage; | 
|   | 
| import java.util.Arrays; | 
|   | 
| /** | 
|  * Copyright (C), 2022, | 
|  * Author: zuo | 
|  * Date: 2022/2/9 10:42 | 
|  * Description: | 
|  */ | 
| public abstract class BaseSocketBean implements IMessage { | 
|   | 
|   | 
|     public abstract byte[] toByte(); | 
|   | 
|     @Override | 
|     public byte[] pack() { | 
|         byte[] data = this.toByte(); | 
|         int baseDataLength = data.length + 5; | 
|         byte[] baseData = new byte[baseDataLength]; | 
|         for (int i = 0; i < baseDataLength; i++) { | 
|             if (i == 0) { | 
|                 baseData[i] = CRC8.hexStrToBinaryStr("68")[0]; | 
|             } else if (i == 1) { | 
|                 baseData[i] = HexUtil.hexToByte(Integer.toHexString(data.length)); | 
|             } else if (i == 2) { | 
|                 baseData[i] = CRC8.hexStrToBinaryStr("68")[0]; | 
|             } else if (i == baseDataLength - 2) { | 
|                 baseData[i] = CRC8.hexStrToBinaryStr(CRC8.getCRC8(Arrays.copyOfRange(baseData, 0, baseData.length - 2)))[0]; | 
|             } else if (i == baseDataLength - 1) { | 
|                 baseData[i] = CRC8.hexStrToBinaryStr("16")[0]; | 
|             } else { | 
|                 baseData[i] = data[i - 3]; | 
|             } | 
|         } | 
| // | 
| //        StringBuffer stringBuffer = new StringBuffer(); | 
| //        stringBuffer.append("68"); | 
| //        stringBuffer.append(CRC8.hexStrToBinaryStr(data).length); | 
| //        stringBuffer.append("68"); | 
| //        stringBuffer.append(data); | 
| //        String crcData = stringBuffer.toString(); | 
| //        stringBuffer.append(CRC8.getCRC8(crcData)); | 
| //        stringBuffer.append("16"); | 
| //        byte[] body = stringBuffer.toString().getBytes(); | 
|         return baseData; | 
|     } | 
| } |