From 59e91a4e9ddaf23cebb12993c774aa899ab22d16 Mon Sep 17 00:00:00 2001
From: 郑永安 <zyazyz250@sina.com>
Date: Mon, 19 Jun 2023 14:22:45 +0800
Subject: [PATCH] 描述
---
src/main/java/com/gk/firework/Domain/Utils/HexUtil.java | 88 ++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 88 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/gk/firework/Domain/Utils/HexUtil.java b/src/main/java/com/gk/firework/Domain/Utils/HexUtil.java
new file mode 100644
index 0000000..d658563
--- /dev/null
+++ b/src/main/java/com/gk/firework/Domain/Utils/HexUtil.java
@@ -0,0 +1,88 @@
+package com.gk.firework.Domain.Utils;
+
+import org.apache.commons.lang3.StringUtils;
+
+public class HexUtil {
+ /**
+ * 将十六进制的字符串转换成字节数组
+ *
+ * @param hexString
+ * @return
+ */
+ public static byte[] hexStrToByteArrs(String hexString) {
+ if (StringUtils.isEmpty(hexString)) {
+ return null;
+ }
+
+ hexString = hexString.replaceAll(" ", "");
+ int len = hexString.length();
+ int index = 0;
+
+ byte[] bytes = new byte[len / 2];
+
+ while (index < len) {
+ String sub = hexString.substring(index, index + 2);
+ bytes[index / 2] = (byte) Integer.parseInt(sub, 16);
+ index += 2;
+ }
+
+ return bytes;
+ }
+
+ /**
+ * 数组转换成十六进制字符串
+ * @return HexString
+ */
+ public static final String bytesToHexString(byte[] bArray) {
+ StringBuffer sb = new StringBuffer(bArray.length);
+ String sTemp;
+ for (int i = 0; i < bArray.length; i++) {
+ sTemp = Integer.toHexString(0xFF & bArray[i]);
+ if (sTemp.length() < 2)
+ sb.append(0);
+ sb.append(sTemp.toUpperCase());
+ // 在这里故意追加一个逗号便于最后的区分
+ sb.append(" ");
+ }
+ return sb.toString();
+ }
+
+
+ /**
+ * 字节转换为浮点
+ *
+ * @param b 字节(至少4个字节)
+ * @param index 开始位置
+ * @return
+ */
+ public static float byte2float(byte[] b, int index) {
+ int l;
+ l = b[index + 0];
+ l &= 0xff;
+ l |= ((long) b[index + 1] << 8);
+ l &= 0xffff;
+ l |= ((long) b[index + 2] << 16);
+ l &= 0xffffff;
+ l |= ((long) b[index + 3] << 24);
+ return Float.intBitsToFloat(l);
+ }
+
+
+ /**四个字节的寄存器(十六进制),两两转成十进制,传过来之后返回浮点数**/
+ public static float GetFloat(int P1, int P2)
+ {
+ int intSign, intSignRest, intExponent, intExponentRest;
+ float faResult, faDigit;
+ intSign = P1 / 32768;
+ intSignRest = P1 % 32768;
+ intExponent = intSignRest / 128;
+ intExponentRest = intSignRest % 128;
+ faDigit = (float)(intExponentRest * 65536 + P2) / 8388608;
+ faResult = (float)Math.pow(-1, intSign) * (float)Math.pow(2, intExponent - 127) * (faDigit + 1);
+ return faResult;
+ }
+
+
+
+
+}
--
Gitblit v1.9.2