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;
|
}
|
}
|