From 8c57cb70cc165d21fdda9385966e8ae65d36cc1d Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期五, 10 五月 2024 11:39:49 +0800
Subject: [PATCH] 1.修复16进制字符串转byte时的bug
---
henanlibrary/src/main/java/com/dayu/henanlibrary/utils/SocketUtil.java | 145 ++---------------------------------------------
baselibrary/src/main/java/com/dayu/baselibrary/tools/HexUtil.java | 25 ++-----
2 files changed, 16 insertions(+), 154 deletions(-)
diff --git a/baselibrary/src/main/java/com/dayu/baselibrary/tools/HexUtil.java b/baselibrary/src/main/java/com/dayu/baselibrary/tools/HexUtil.java
index fc17f34..19f3ca7 100644
--- a/baselibrary/src/main/java/com/dayu/baselibrary/tools/HexUtil.java
+++ b/baselibrary/src/main/java/com/dayu/baselibrary/tools/HexUtil.java
@@ -48,24 +48,11 @@
for (int i = 0; i < byteList.size(); i++) {
byteArray[i] = byteList.get(i);
}
- String hex = bytesToHexNoAppen(byteArray);
+ String hex = bytesToHex(byteArray);
return Integer.parseInt(hex, 16);
}
- /**
- * byte 鏁扮粍杞�16杩涘埗瀛楃涓� 涓嶅姞0鍓嶇紑
- *
- * @param bytes
- * @return
- */
- public static String bytesToHexNoAppen(byte[] bytes) {
- StringBuffer sb = new StringBuffer();
- for (int i = 0; i < bytes.length; i++) {
- String hex = Integer.toHexString(bytes[i] & 0xFF);
- sb.append(hex);
- }
- return sb.toString();
- }
+
public static int getBcdToInt(byte data) {
return ((data & 0xF0) >> 4) * 10 + ((data & 0x0F));
@@ -222,7 +209,7 @@
for (int i = 0; i < byteList.size(); i++) {
byteArray[i] = byteList.get(i);
}
- String hex = bytesToHexNoAppen(byteArray);
+ String hex = bytesToHex(byteArray);
int intValue = Integer.parseInt(hex, 16); // 灏嗗崄鍏繘鍒跺瓧绗︿覆杞崲涓烘暣鏁拌〃绀�
float floatValue = Float.intBitsToFloat(intValue); // 灏嗘暣鏁拌〃绀鸿浆鎹负娴偣鏁�
return floatValue;
@@ -297,6 +284,10 @@
* @return
*/
public static String spaceHex(String str) {
+ if (str.length() % 2 != 0) {
+ //濂囨暟鏃跺墠闈㈠姞0琛ラ綈绉颁负鍋舵暟
+ str = "0" + str;
+ }
char[] array = str.toCharArray();
if (str.length() <= 2) return str;
StringBuffer bufferHex = new StringBuffer();
@@ -317,7 +308,7 @@
* @param str
* @return
*/
- private static String HighLowHex(String str) {
+ public static String HighLowHex(String str) {
if (str.trim().length() <= 2) return str;
List<String> list = Arrays.asList(str.split(" "));
Collections.reverse(list);
diff --git a/henanlibrary/src/main/java/com/dayu/henanlibrary/utils/SocketUtil.java b/henanlibrary/src/main/java/com/dayu/henanlibrary/utils/SocketUtil.java
index 2698428..0c8c096 100644
--- a/henanlibrary/src/main/java/com/dayu/henanlibrary/utils/SocketUtil.java
+++ b/henanlibrary/src/main/java/com/dayu/henanlibrary/utils/SocketUtil.java
@@ -1,5 +1,6 @@
package com.dayu.henanlibrary.utils;
+
import android.content.Context;
import android.os.Handler;
import android.os.Message;
@@ -12,9 +13,6 @@
import java.math.BigInteger;
import java.net.InetAddress;
import java.net.UnknownHostException;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
import java.util.Random;
import java.util.regex.Pattern;
@@ -51,45 +49,6 @@
return sb.toString().trim();
}
- /**
- * 16杩涘埗鐩存帴杞崲鎴愪负瀛楃涓�(鏃犻渶Unicode瑙g爜)
- *
- * @param hexStr
- * @return
- */
- public static String hexStr2Str(String hexStr) {
- String str = "0123456789ABCDEF";
- char[] hexs = hexStr.toCharArray();
- byte[] bytes = new byte[hexStr.length() / 2];
- int n;
- for (int i = 0; i < bytes.length; i++) {
- n = str.indexOf(hexs[2 * i]) * 16;
- n += str.indexOf(hexs[2 * i + 1]);
- bytes[i] = (byte) (n & 0xff);
- }
- return new String(bytes);
- }
-
-
- /**
- * 16杩涘埗鐩存帴杞崲鎴愪负瀛楃涓�(鏃犻渶Unicode瑙g爜)
- *
- * @param hexStr
- * @return
- */
- public static String hexStr2StrUnicode(String hexStr) {
- String str = "0123456789ABCDEF";
- char[] hexs = hexStr.toCharArray();
- byte[] bytes = new byte[hexStr.length() / 2];
- int n;
- for (int i = 0; i < bytes.length; i++) {
- n = str.indexOf(hexs[2 * i]) * 16;
- n += str.indexOf(hexs[2 * i + 1]);
- bytes[i] = (byte) (n & 0xff);
- }
- return new String(bytes);
- }
-
/**
* 16杩涘埗鐩存帴杞崲鎴愪负瀛楃涓�
@@ -123,53 +82,6 @@
}
return result;
}
-
- /**
- * 瀛楃涓茶浆鎹㈡垚涓�16杩涘埗瀛楃涓诧紙澶у啓锛�
- *
- * @param str 瀛楃涓诧紙鍘婚櫎java杞箟瀛楃锛�
- * @return 16杩涘埗瀛楃涓�
- * @throws Exception
- * @explain 鍥犱负java杞箟瀛楃涓插湪java涓湁鐫�鐗规畩鐨勬剰涔夛紝
- * 鎵�浠ュ綋瀛楃涓蹭腑鍖呭惈杞箟瀛楃涓诧紝骞跺皢鍏惰浆鎹㈡垚16杩涘埗鍚庯紝16杩涘埗鍐嶈浆鎴怱tring鏃讹紝浼氬嚭闂锛�
- * java浼氬皢鍏跺綋鍋氳浆涔夊瓧绗︿覆鎵�浠h〃鐨勫惈涔夎В鏋愬嚭鏉�
- */
- public static String toHexString(String str) throws Exception {
- // 鐢ㄤ簬鎺ユ敹杞崲缁撴灉
- String hexString = "";
- // 1.鏍¢獙鏄惁鍖呭惈鐗规畩瀛楃鍐呭
- // java鐗规畩杞箟绗�
- // String[] escapeArray = {"\b","\t","\n","\f","\r","\'","\"","\\"};
- String[] escapeArray = {"\b", "\t", "\n", "\f", "\r"};
- // 鐢ㄤ簬鏍¢獙鍙傛暟鏄惁鍖呭惈鐗规畩杞箟绗�
- boolean flag = false;
- // 杩唬
- for (String esacapeStr : escapeArray) {
- // 涓�鐪熷垯鐪�
- if (str.contains(esacapeStr)) {
- flag = true;
- break;// 缁堟寰幆
- }
- }
- // 鍖呭惈鐗规畩瀛楃
- if (flag) throw new Exception("鍙傛暟瀛楃涓蹭笉鑳藉寘鍚浆涔夊瓧绗︼紒");
-
- // 16杩涘埗瀛楃
- char[] hexArray = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
- StringBuilder sb = new StringBuilder();
- // String-->byte[]
- byte[] bs = str.getBytes();
- int bit;
- for (int i = 0; i < bs.length; i++) {
- bit = (bs[i] & 0x0f0) >> 4;
- sb.append(hexArray[bit]);
- bit = bs[i] & 0x0f;
- sb.append(hexArray[bit]);
- }
- hexString = sb.toString();
- return hexString;
- }
-
/**
* @param hex
@@ -209,9 +121,6 @@
return decimalValue;
}
- public static String get10to16(int number) {
- return Integer.toHexString(number);
- }
/**
* 鑾峰彇鍏呭�肩鐞嗘満搴忓垪鍙�
@@ -231,44 +140,6 @@
e.printStackTrace();
}
return xuLie;
- }
-
- /**
- * 鍗佸叚杩涘埗鏁伴殧绌轰綅
- *
- * @param str
- * @return
- */
- private static String spaceHex(String str) {
- char[] array = str.toCharArray();
- if (str.length() <= 2) return str;
- StringBuffer bufferHex = new StringBuffer();
- for (int i = 0; i < array.length; i++) {
- int start = i + 1;
- if (start % 2 == 0) {
- bufferHex.append(array[i]).append(" ");
- } else {
- bufferHex.append(array[i]);
- }
- }
- return bufferHex.toString();
- }
-
- /**
- * 楂樹綅16杩涘埗杞綆浣�
- *
- * @param str
- * @return
- */
- private static String HighLowHex(String str) {
- if (str.trim().length() <= 2) return str;
- List<String> list = Arrays.asList(str.split(" "));
- Collections.reverse(list);
- StringBuffer stringBuffer = new StringBuffer();
- for (String string : list) {
- stringBuffer.append(string);
- }
- return stringBuffer.toString();
}
@@ -318,8 +189,8 @@
try {
str = Integer.toHexString(number);
str = getHexToLenght(str, length);
- str = spaceHex(str);
- str = HighLowHex(str);
+ str = HexUtil.spaceHex(str);
+ str = HexUtil.HighLowHex(str);
} catch (Exception e) {
e.printStackTrace();
@@ -338,8 +209,8 @@
int number = 0;
try {
String str = HexUtil.bytesToHex(hexNumber);
- str = spaceHex(str);
- str = HighLowHex(str);
+ str = HexUtil.spaceHex(str);
+ str = HexUtil.HighLowHex(str);
number = hexToDecimal(str);
} catch (Exception e) {
e.printStackTrace();
@@ -416,11 +287,11 @@
String myhost = host.replace("http://", "");
myhost = myhost.replace("https://", "");
// InetAddress inetAddressArr = InetAddress.getByName(myhost);
- InetAddress[] inetAddressArrs= InetAddress.getAllByName(myhost);
- if (inetAddressArrs.length==1){
+ InetAddress[] inetAddressArrs = InetAddress.getAllByName(myhost);
+ if (inetAddressArrs.length == 1) {
message.what = 1;
message.obj = inetAddressArrs[0].getHostAddress();
- }else {
+ } else {
message.what = 2;
message.obj = inetAddressArrs;
--
Gitblit v1.8.0