package com.xhpc.pp.utils;

/**
 * 电流算法
 *
 * @author yuyang
 * @Date 2025-06-06 11:02
 */
public class BMSCurrentParser {
    /**
     * 解析BMS电流需求值
     * @param hexString 2字节十六进制字符串（小端序），如"18FC"
     * @return 电流值（单位：A）
     */
    public static double parseBmsCurrent(String hexString,int number) {
        // 验证输入格式
        if (hexString == null || hexString.length() != 4) {
            throw new IllegalArgumentException("输入必须是4位十六进制字符串");
        }

        try {
            // 解析低字节（前2位字符）
            int lowByte = Integer.parseInt(hexString.substring(0, 2), 16);
            // 解析高字节（后2位字符）
            int highByte = Integer.parseInt(hexString.substring(2, 4), 16);

            // 组合为16位无符号整数（小端序）
            int unsignedValue = (highByte << 8) | lowByte;

            // 转换为有符号16位整数
            int signedValue = unsignedValue;
            if (unsignedValue >= 32768) {
                signedValue = unsignedValue - 65536;
            }

            // 应用单位换算和偏移量
            return (signedValue * 0.1) - number;
        } catch (NumberFormatException e) {
            throw new IllegalArgumentException("无效的十六进制格式");
        }
    }

    public static void main(String[] args) {
        BMSCurrentParser bmsCurrentParser = new BMSCurrentParser();
        System.out.println(bmsCurrentParser.parseBmsCurrent("FD07",-400));
        System.out.println(bmsCurrentParser.parseBmsCurrent("4A09",-400));
    }

}
