| | |
| | | package com.dayu.henanlibrary.utils; |
| | | |
| | | |
| | | import android.content.Context; |
| | | import android.os.Handler; |
| | | import android.os.Message; |
| | | |
| | | import com.dayu.baselibrary.tools.HexUtil; |
| | | import com.dayu.henanlibrary.dao.BaseDaoSingleton; |
| | | import com.dayu.henanlibrary.dao.HNBaseDaoSingleton; |
| | | import com.dayu.henanlibrary.dbBean.AdminDataBean; |
| | | |
| | | import java.io.UnsupportedEncodingException; |
| | | 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); |
| | | } |
| | | |
| | | /** |
| | | * 获取充值管理机序列号 |
| | |
| | | |
| | | String xuLie = ""; |
| | | try { |
| | | AdminDataBean villageNo = BaseDaoSingleton.getInstance(context).adminDao().findFirst(); |
| | | AdminDataBean villageNo = HNBaseDaoSingleton.getInstance(context).adminDao().findFirst(); |
| | | if (villageNo != null) { |
| | | xuLie = SocketUtil.get10to16LowHigh(Integer.valueOf(villageNo.getSerial()), 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(); |
| | | } |
| | | |
| | | |
| | |
| | | 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; |
| | | |
| | |
| | | public static String getOrderId(Context context) { |
| | | String orderId = "000000000001"; |
| | | try { |
| | | AdminDataBean villageNo = BaseDaoSingleton.getInstance(context).adminDao().findFirst(); |
| | | AdminDataBean villageNo = HNBaseDaoSingleton.getInstance(context).adminDao().findFirst(); |
| | | // String orderNo = WSHelper.getInstance(context).get(OrderNo, 1) + ""; |
| | | String orderNo = generateNumber8(); |
| | | if (villageNo != null) { |