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