左晓为主开发手持机充值管理机
henanlibrary/src/main/java/com/dayu/henanlibrary/utils/SocketUtil.java
@@ -1,20 +1,18 @@
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;
@@ -51,45 +49,6 @@
        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进制直接转换成为字符串
@@ -123,53 +82,6 @@
        }
        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
@@ -209,9 +121,6 @@
        return decimalValue;
    }
    public static String get10to16(int number) {
        return Integer.toHexString(number);
    }
    /**
     * 获取充值管理机序列号
@@ -223,7 +132,7 @@
        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);
            }
@@ -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;
@@ -454,7 +325,7 @@
    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) {