|  |  | 
 |  |  | package com.dayu.henanlibrary.utils; | 
 |  |  |  | 
 |  |  |  | 
 |  |  | import android.content.Context; | 
 |  |  | import android.os.Handler; | 
 |  |  | import android.os.Message; | 
 |  |  | 
 |  |  | 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; | 
 |  |  |  | 
 |  |  | 
 |  |  |         return sb.toString().trim(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 16进制直接转换成为字符串(无需Unicode解码) | 
 |  |  |      * | 
 |  |  |      * @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解码) | 
 |  |  |      * | 
 |  |  |      * @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进制直接转换成为字符串 | 
 |  |  | 
 |  |  |         } | 
 |  |  |         return result; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 字符串转换成为16进制字符串(大写) | 
 |  |  |      * | 
 |  |  |      * @param str 字符串(去除java转义字符) | 
 |  |  |      * @return 16进制字符串 | 
 |  |  |      * @throws Exception | 
 |  |  |      * @explain 因为java转义字符串在java中有着特殊的意义, | 
 |  |  |      * 所以当字符串中包含转义字符串,并将其转换成16进制后,16进制再转成String时,会出问题: | 
 |  |  |      * java会将其当做转义字符串所代表的含义解析出来 | 
 |  |  |      */ | 
 |  |  |     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 | 
 |  |  | 
 |  |  |         return decimalValue; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public static String get10to16(int number) { | 
 |  |  |         return Integer.toHexString(number); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 获取充值管理机序列号 | 
 |  |  | 
 |  |  |             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(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  | 
 |  |  |         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(); | 
 |  |  | 
 |  |  |         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(); | 
 |  |  | 
 |  |  |                     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; | 
 |  |  |  |