package com.dayu.rechargeqh.socketBean; import com.dayu.rechargeqh.net.IMessage; import com.dayu.rechargeqh.tools.HexUtil; import com.dayu.rechargeqh.utils.CRC8; 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; } }