⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 util.java

📁 LUMAQQ源代码 JAVA 地球人都知道
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
     * @return 如果转换失败,返回faultValue,成功返回转换后的值
     */
    public static int getInt(String s, int radix, int faultValue) {
        try {
            return Integer.parseInt(s, radix);
        } catch (NumberFormatException e) {
            return faultValue;
        }
    }
    
    /**
     * 检查字符串是否是整数格式
     * 
     * @param s
     * 		字符串
     * @return
     * 		true表示可以解析成整数
     */
    public static boolean isInt(String s) {
        try {
            Integer.parseInt(s);
            return true;
        } catch(NumberFormatException e) {
            return false;
        }
    }
    
    /**
     * 把字符串转换成char类型的无符号数
     * @param s 字符串
     * @param faultValue 如果转换失败,返回这个值
     * @return 如果转换失败,返回faultValue,成功返回转换后的值
     */
    public static char getChar(String s, int faultValue) {
        return (char)(getInt(s, faultValue) & 0xFFFF);
    }
    
    /**
     * 把字符串转换成byte
     * @param s 字符串
     * @param faultValue 如果转换失败,返回这个值
     * @return 如果转换失败,返回faultValue,成功返回转换后的值
     */
    public static byte getByte(String s, int faultValue) {
        return (byte)(getInt(s, faultValue) & 0xFF);
    }
    
    /**
     * @param ip ip的字节数组形式
     * @return 字符串形式的ip
     */
    public static String getIpStringFromBytes(byte[] ip) {
	    sb.delete(0, sb.length());
    	sb.append(ip[0] & 0xFF);
    	sb.append('.');   	
    	sb.append(ip[1] & 0xFF);
    	sb.append('.');   	
    	sb.append(ip[2] & 0xFF);
    	sb.append('.');   	
    	sb.append(ip[3] & 0xFF);
    	return sb.toString();
    }
    
    /**
     * 从ip的字符串形式得到字节数组形式
     * @param ip 字符串形式的ip
     * @return 字节数组形式的ip
     */
    public static byte[] getIpByteArrayFromString(String ip) {
        byte[] ret = new byte[4];
        StringTokenizer st = new StringTokenizer(ip, ".");
        try {
            ret[0] = (byte)(Integer.parseInt(st.nextToken()) & 0xFF);
            ret[1] = (byte)(Integer.parseInt(st.nextToken()) & 0xFF);
            ret[2] = (byte)(Integer.parseInt(st.nextToken()) & 0xFF);
            ret[3] = (byte)(Integer.parseInt(st.nextToken()) & 0xFF);
        } catch (Exception e) {
            log.error(e.getMessage());
        }
        return ret;
    }
    
    /**
     * 判断IP是否相等
     * @param ip1 IP的字节数组形式
     * @param ip2 IP的字节数组形式
     * @return true如果两个IP相等
     */
    public static boolean isIpEquals(byte[] ip1, byte[] ip2) {
        return (ip1[0] == ip2[0] && ip1[1] == ip2[1] && ip1[2] == ip2[2] && ip1[3] == ip2[3]);
    }
    
    /**
     * @param cmd 命令类型
     * @return 命令的字符串形式,用于调试
     */
    public static String getCommandString(char cmd) {
        switch (cmd) {
            case QQ.QQ_CMD_REQUEST_LOGIN_TOKEN:
                return "QQ_CMD_REQUEST_LOGIN_TOKEN";
	        case QQ.QQ_CMD_LOGOUT:
	            return "QQ.QQ_CMD_LOGOUT";
	        case QQ.QQ_CMD_KEEP_ALIVE:
	            return "QQ.QQ_CMD_KEEP_ALIVE";
	        case QQ.QQ_CMD_MODIFY_INFO:
	            return "QQ.QQ_CMD_MODIFY_INFO";
	        case QQ.QQ_CMD_SEARCH_USER:
	            return "QQ.QQ_CMD_SEARCH_USER";
	        case QQ.QQ_CMD_GET_USER_INFO:
	            return "QQ.QQ_CMD_GET_USER_INFO";
	        case QQ.QQ_CMD_FRIEND_LEVEL_OP:
	        	return "QQ_CMD_FRIEND_LEVEL_OP";
	        case QQ.QQ_CMD_ADD_FRIEND_EX:
	        	return "QQ_CMD_ADD_FRIEND_EX";
	        case QQ.QQ_CMD_DELETE_FRIEND:
	            return "QQ.QQ_CMD_DELETE_FRIEND";
	        case QQ.QQ_CMD_ADD_FRIEND_AUTH:
	            return "QQ.QQ_CMD_ADD_FRIEND_AUTH";
	        case QQ.QQ_CMD_CHANGE_STATUS:
	            return "QQ.QQ_CMD_CHANGE_STATUS";
	        case QQ.QQ_CMD_ACK_SYS_MSG:
	            return "QQ.QQ_CMD_ACK_SYS_MSG";
	        case QQ.QQ_CMD_SEND_IM:
	            return "QQ.QQ_CMD_SEND_IM";
	        case QQ.QQ_CMD_RECV_IM:
	            return "QQ.QQ_CMD_RECV_IM";
	        case QQ.QQ_CMD_REMOVE_SELF:
	            return "QQ.QQ_CMD_REMOVE_SELF";
	        case QQ.QQ_CMD_LOGIN:
	            return "QQ.QQ_CMD_LOGIN";
	        case QQ.QQ_CMD_GET_FRIEND_LIST:
	            return "QQ.QQ_CMD_GET_FRIEND_LIST";
	        case QQ.QQ_CMD_GET_ONLINE_OP:
	            return "QQ.QQ_CMD_GET_FRIEND_ONLINE";
	        case QQ.QQ_CMD_CLUSTER_CMD:
	            return "QQ.QQ_CMD_CLUSTER_CMD";
	        case QQ.QQ_CMD_RECV_MSG_SYS:
	            return "QQ.QQ_CMD_RECV_MSG_SYS";
	        case QQ.QQ_CMD_RECV_MSG_FRIEND_CHANGE_STATUS:
	            return "QQ.QQ_CMD_RECV_MSG_FRIEND_CHANGE_STATUS";
	        case QQ.QQ_CMD_REQUEST_KEY:
	            return "QQ_CMD_REQUEST_KEY";
	        case QQ.QQ_CMD_GROUP_DATA_OP:
	        	return "QQ_CMD_GROUP_NAME_OP";
	        case QQ.QQ_CMD_UPLOAD_GROUP_FRIEND:
	        	return "QQ_CMD_UPLOAD_GROUP_FRIEND";
	        case QQ.QQ_CMD_DOWNLOAD_GROUP_FRIEND:
	        	return "QQ_CMD_DOWNLOAD_GROUP_FRIEND";
	        case QQ.QQ_CMD_FRIEND_DATA_OP:
	        	return "QQ_CMD_FRIEND_DATA_OP";
	        case QQ.QQ_CMD_ADVANCED_SEARCH:
	            return "QQ_CMD_ADVANCED_SEARCH";
	        case QQ.QQ_CMD_CLUSTER_DATA_OP:
	            return "QQ_CMD_GET_TEMP_CLUSTER_ONLINE_MEMBER";
	        case QQ.QQ_CMD_AUTHORIZE:
	        	return "QQ_CMD_AUTHORIZE";
	        case QQ.QQ_CMD_SIGNATURE_OP:
	        	return "QQ_CMD_SIGNATURE_OP";
	        case QQ.QQ_CMD_USER_PROPERTY_OP:
	        	return "QQ_CMD_USER_PROPERTY_OP";
	        case QQ.QQ_CMD_WEATHER_OP:
	        	return "QQ_CMD_WEATHER_OP";
	        case QQ.QQ_CMD_SEND_SMS:
	        	return "QQ_CMD_SEND_SMS";
	        case QQ.QQ_CMD_TEMP_SESSION_OP:
	        	return "QQ_CMD_TEMP_SESSION_OP";
	        case QQ.QQ_CMD_PRIVACY_DATA_OP:
	        	return "QQ_CMD_PRIVACY_DATA_OP";
	        default:
	            return "UNKNOWN_TYPE " + (int)cmd;
        }
    }
    
    /**
     * 得到群操作的字符串形式,仅用于调试
     * @param cmd
     * @return
     */
    public static String getClusterCommandString(byte cmd) {
    	  switch (cmd) {
    	    case QQ.QQ_CLUSTER_CMD_CREATE_CLUSTER:
    	    	return "QQ_CLUSTER_CMD_CREATE_CLUSTER";
    	    case QQ.QQ_CLUSTER_CMD_MODIFY_MEMBER:
    	    	return "QQ_CLUSTER_CMD_MODIFY_MEMBER";
    	    case QQ.QQ_CLUSTER_CMD_MODIFY_CLUSTER_INFO:
    	    	return "QQ_CLUSTER_CMD_MODIFY_CLUSTER_INFO";
    	    case QQ.QQ_CLUSTER_CMD_GET_CLUSTER_INFO:   
    	    	return "QQ_CLUSTER_CMD_GET_CLUSTER_INFO";
    	    case QQ.QQ_CLUSTER_CMD_ACTIVATE_CLUSTER:    
    	    	return "QQ_CLUSTER_CMD_ACTIVATE_CLUSTER";
    	    case QQ.QQ_CLUSTER_CMD_SEARCH_CLUSTER:     
    	    	return "QQ_CLUSTER_CMD_SEARCH_CLUSTER";
    	    case QQ.QQ_CLUSTER_CMD_JOIN_CLUSTER:        
    	    	return "QQ_CLUSTER_CMD_JOIN_CLUSTER";
    	    case QQ.QQ_CLUSTER_CMD_JOIN_CLUSTER_AUTH:   
    	    	return "QQ_CLUSTER_CMD_JOIN_CLUSTER_AUTH";
    	    case QQ.QQ_CLUSTER_CMD_EXIT_CLUSTER:        
    	    	return "QQ_CLUSTER_CMD_EXIT_CLUSTER";
    	    case QQ.QQ_CLUSTER_CMD_GET_ONLINE_MEMBER: 
    	    	return "QQ_CLUSTER_CMD_GET_ONLINE_MEMBER";
    	    case QQ.QQ_CLUSTER_CMD_GET_MEMBER_INFO:  
    	    	return "QQ_CLUSTER_CMD_GET_MEMBER_INFO";
    	    case QQ.QQ_CLUSTER_CMD_GET_TEMP_INFO:
    	    	return "QQ_CLUSTER_CMD_GET_TEMP_INFO";
    	    case QQ.QQ_CLUSTER_CMD_ACTIVATE_TEMP:
    	    	return "QQ_CLUSTER_CMD_ACTIVATE_TEMP";
    	    case QQ.QQ_CLUSTER_CMD_COMMIT_MEMBER_ORGANIZATION:
    	    	return "QQ_CLUSTER_CMD_COMMIT_MEMBER_ORGANIZATION";
    	    case QQ.QQ_CLUSTER_CMD_COMMIT_ORGANIZATION:
    	    	return "QQ_CLUSTER_CMD_COMMIT_MEMBER_ORGANIZATION";
    	    case QQ.QQ_CLUSTER_CMD_CREATE_TEMP:
    	    	return "QQ_CLUSTER_CMD_CREATE_TEMP";
    	    case QQ.QQ_CLUSTER_CMD_EXIT_TEMP:
    	    	return "QQ_CLUSTER_CMD_EXIT_TEMP";
    	    case QQ.QQ_CLUSTER_CMD_GET_CARD:
    	    	return "QQ_CLUSTER_CMD_GET_CARD";
    	    case QQ.QQ_CLUSTER_CMD_GET_CARD_BATCH:
    	    	return "QQ_CLUSTER_CMD_GET_CARD_BATCH";
    	    case QQ.QQ_CLUSTER_CMD_GET_VERSION_ID:
    	    	return "QQ_CLUSTER_CMD_GET_VERSION_ID";
    	    case QQ.QQ_CLUSTER_CMD_MODIFY_CARD:
    	    	return "QQ_CLUSTER_CMD_MODIFY_CARD";
    	    case QQ.QQ_CLUSTER_CMD_MODIFY_TEMP_INFO:
    	    	return "QQ_CLUSTER_CMD_MODIFY_TEMP_INFO";
    	    case QQ.QQ_CLUSTER_CMD_SEND_TEMP_IM:
    	    	return "QQ_CLUSTER_CMD_SEND_TEMP_IM";
    	    default:                             
    	    	return "Unknown QQ Cluster Command";
    	  }
    }
    
    /**
     * 返回文件命令的字符串形式,仅用作调试
     * @param command
     * @return
     */
    public static String getFileCommandString(char command) {
    	switch(command) {
    	    case QQ.QQ_FILE_CMD_HEART_BEAT:
    	        return "QQ_FILE_CMD_HEART_BEAT";
    	    case QQ.QQ_FILE_CMD_HEART_BEAT_ACK:
    	        return "QQ_FILE_CMD_HEART_BEAT_ACK";
    	    case QQ.QQ_FILE_CMD_TRANSFER_FINISHED:
    	        return "QQ_FILE_CMD_TRANSFER_FINISHED";
    	    case QQ.QQ_FILE_CMD_FILE_OP:
    	        return "QQ_FILE_CMD_FILE_OP";
    	    case QQ.QQ_FILE_CMD_FILE_OP_ACK:
    	        return "QQ_FILE_CMD_FILE_OP_ACK";
    		case QQ.QQ_FILE_CMD_SENDER_SAY_HELLO:
    			return "QQ_FILE_CMD_SENDER_SAY_HELLO";    	
    		case QQ.QQ_FILE_CMD_SENDER_SAY_HELLO_ACK:
    		    return "QQ_FILE_CMD_SENDER_SAY_HELLO_ACK";
    		case QQ.QQ_FILE_CMD_RECEIVER_SAY_HELLO:
    			return "QQ_FILE_CMD_RECEIVER_SAY_HELLO";    		
    		case QQ.QQ_FILE_CMD_RECEIVER_SAY_HELLO_ACK:
    			return "QQ_FILE_CMD_RECEIVER_SAY_HELLO_ACK";    		
    		case QQ.QQ_FILE_CMD_NOTIFY_IP_ACK:
    			return "QQ_FILE_CMD_NOTIFY_IP_ACK";    		
    		case QQ.QQ_FILE_CMD_PING:
    			return "QQ_FILE_CMD_PING";    		
    		case QQ.QQ_FILE_CMD_PONG:
    			return "QQ_FILE_CMD_PONG";    		
    		case QQ.QQ_FILE_CMD_YES_I_AM_BEHIND_FIREWALL:
    			return "QQ_FILE_CMD_YES_I_AM_BEHIND_FIREWALL";    			
    		default:
    			return "UNKNOWN TYPE " + (int)command;
    	}
    }
    
    /**
     * 这个不是用于调试的,真正要用的方法
     * @param encoding 编码方式
     * @return 编码方式的字符串表示形式
     */
    public static String getEncodingString(char encoding) {
        switch(encoding) {
        	case QQ.QQ_CHARSET_GB:
        	  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -