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