package com.mvc.forwarmana;

import com.mvc.utils.NumberUtil;
import org.apache.commons.lang3.StringUtils;

/**
 * 组包工具类
 */
public class PackUtils {
    /**
     * 获取长度标识符
     *
     * @param len 数据长度(不是字节数)
     * @param rdx
     * @return
     */
    public static String getItemLenIdentifier(int len, int rdx) {
        len = len % 2 == 0 ? len : len + 1;
        var flagInt = (len / 2) << 3;
        var flagRdx = rdx & 0x07;
        var flag = flagInt | flagRdx;
        return NumberUtil.numToHex8(flag);
    }

    /**
     * 转换遥测站编码
     * 后四位变16进制
     * @param stationCode
     * @return
     */
    public static String convertStationCode(String stationCode){
        //这样变的原因是,朝阳、昌平的平台是这样解析的(河北恒源水务科技有限公司)
        // 获取stationCode从第7位开始的数字子串并转换为整数
        int value = Integer.parseInt(stationCode.substring(6));
        // 将整数转换为大写的16进制字符串，并确保至少有4位（不足时前面补0）
        String hexValue = String.format("%04X", value);
        // 拼接处理后的hexValue到原始stationCode的前6位
        return stationCode.substring(0, 6) + hexValue;
        /*String temp = stationCode.substring(6);
        int value = Integer.valueOf(temp);
        temp = Integer.toHexString(value).toUpperCase();
        return stationCode.substring(0,6) + StringUtils.leftPad(temp,4,'0');*/
    }

    public static void main(String[] args) {

    }
}
