|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  |  | 
|---|