From c4b015770e8a29f18e19cc44b3df46c20a4762f4 Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期二, 10 八月 2021 10:17:42 +0800
Subject: [PATCH] 2021-08-10 1.更新

---
 hdl_core/src/main/java/com/hdl/sdk/hdl_core/Util/TransformUtil/HDLUtlis.java |   50 ++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 42 insertions(+), 8 deletions(-)

diff --git a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/Util/TransformUtil/HDLUtlis.java b/hdl_core/src/main/java/com/hdl/sdk/hdl_core/Util/TransformUtil/HDLUtlis.java
index 514bda7..e46a12e 100644
--- a/hdl_core/src/main/java/com/hdl/sdk/hdl_core/Util/TransformUtil/HDLUtlis.java
+++ b/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]鏁扮粍 杞崲涓篺loat绫诲瀷
+     * @param sign 鏁版嵁绫诲瀷	0淇濈暀 1鏃犵鍙�4Byte鏁村舰 2鏈夌鍙�4Byte鏁村舰 3Float褰紙浠B憋級 娉細灏忔暟鐐圭殑鐢ㄦ诞鐐硅〃绀猴紝鏁存暟涓嶈〃绀哄皬鏁扮偣
+     * @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褰紙浠B憋級
+                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;
+        }
+    }
 
 }

--
Gitblit v1.8.0