JLChen
2021-08-10 c4b015770e8a29f18e19cc44b3df46c20a4762f4
hdl_core/src/main/java/com/hdl/sdk/hdl_core/Util/TransformUtil/HDLUtlis.java
@@ -55,17 +55,26 @@
     * @return
     */
    public static float byteToFloat(byte b1, byte b2, byte b3, byte b4) {
        byte[] mByte = new byte[4];
        mByte[0] = b1;
        mByte[1] = b2;
        mByte[2] = b3;
        mByte[3] = b4;
        byte[] mByte = new byte[]{b4, b3, b2, b1};
        return byteArrayToFloat(mByte);
    }
    public static double byteToDouble(byte b1, byte b2, byte b3, byte b4) {
        return b1 * 256 * 256 * 256 + b2 * 256 * 256 + b3 * 256 + b4;
    /**
     * 无符号4Byte整形
     */
    public static float byteToFloat_UnsignedInteger(byte b1, byte b2, byte b3, byte b4) {
        return (b1 & 0xFF) * 256 * 256 * 256 + (b2 & 0xFF) * 256 * 256 + (b3 & 0xFF) * 256 + (b4 & 0xFF);
    }
    /**
     * 有符号4Byte整形
     */
    public static float byteToFloat_SignedInteger(byte b1, byte b2, byte b3, byte b4) {
        float mfloat = (b1 & 0x7F) * 256 * 256 * 256 + (b2 & 0xFF) * 256 * 256 + (b3 & 0xFF) * 256 + (b4 & 0xFF);
        if(((b1 & 0xFF) >> 7) > 0){
            return -mfloat;
        }else{
            return mfloat;
        }
    }
@@ -108,5 +117,30 @@
        return getByteArray(intbits);
    }
    /**
     * byte[4]数组 转换为float类型
     * @param sign 数据类型   0保留 1无符号4Byte整形 2有符号4Byte整形 3Float形(代±) 注:小数点的用浮点表示,整数不表示小数点
     * @param b1~b5  sign == 3 的时候 数据值高位在前,低位在后 (数据从后往前装载,例如100的值,应该时0x00000064)
     * @return
     */
    public static float byteArrayToFloatWithSign(byte sign, byte b1, byte b2, byte b3, byte b4) {
        try {
            if(sign == 1){//1无符号4Byte整形
                return byteToFloat_UnsignedInteger(b1, b2, b3, b4);
            }else if(sign == 2){//2有符号4Byte整形
                return byteToFloat_SignedInteger(b1, b2, b3, b4);
            }else if(sign == 3){//3Float形(代±)
                byte[] mByte = new byte[]{b4, b3, b2, b1};
                return byteArrayToFloat(mByte);
            }else{
                return byteToFloat_UnsignedInteger(b1, b2, b3, b4);
            }
        } catch (Exception e) {
            e.printStackTrace();
            return 0;
        }
    }
}