📄 util.java
字号:
* @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 + -