package com.test;
import java.math.BigInteger;
public class Util {
private static final char[] DIGITS_LOWER = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
private static final char[] DIGITS_UPPER = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
public Util() {
}
public static byte[] intToBytes(int num) {
byte[] bytes = new byte[]{(byte)(255 & num >> 0), (byte)(255 & num >> 8), (byte)(255 & num >> 16), (byte)(255 & num >> 24)};
return bytes;
}
public static int byteToInt(byte[] bytes) {
int num = 0;
int temp = (255 & bytes[0]) << 0;
num = num | temp;
temp = (255 & bytes[1]) << 8;
num |= temp;
temp = (255 & bytes[2]) << 16;
num |= temp;
temp = (255 & bytes[3]) << 24;
num |= temp;
return num;
}
public static byte[] longToBytes(long num) {
byte[] bytes = new byte[8];
for(int i = 0; i < 8; ++i) {
bytes[i] = (byte)((int)(255L & num >> i * 8));
}
return bytes;
}
public static byte[] byteConvert32Bytes(BigInteger n) {
byte[] tmpd = (byte[])null;
if (n == null) {
return null;
} else {
if (n.toByteArray().length == 33) {
tmpd = new byte[32];
System.arraycopy(n.toByteArray(), 1, tmpd, 0, 32);
} else if (n.toByteArray().length == 32) {
tmpd = n.toByteArray();
} else {
tmpd = new byte[32];
for(int i = 0; i < 32 - n.toByteArray().length; ++i) {
tmpd[i] = 0;
}
System.arraycopy(n.toByteArray(), 0, tmpd, 32 - n.toByteArray().length, n.toByteArray().length);
}
return tmpd;
}
}
public static BigInteger byteConvertInteger(byte[] b) {
if (b[0] < 0) {
byte[] temp = new byte[b.length + 1];
temp[0] = 0;
System.arraycopy(b, 0, temp, 1, b.length);
return new BigInteger(temp);
} else {
return new BigInteger(b);
}
}
public static String getHexString(byte[] bytes) {
return getHexString(bytes, true);
}
public static String getHexString(byte[] bytes, boolean upperCase) {
String ret = "";
for(int i = 0; i < bytes.length; ++i) {
ret = ret + Integer.toString((bytes[i] & 255) + 256, 16).substring(1);
}
return upperCase ? ret.toUpperCase() : ret;
}
public static void printHexString(byte[] bytes) {
for(int i = 0; i < bytes.length; ++i) {
String hex = Integer.toHexString(bytes[i] & 255);
if (hex.length() == 1) {
hex = '0' + hex;
}
System.out.print("0x" + hex.toUpperCase() + ",");
}
System.out.println("");
}
public static byte[] hexStringToBytes(String hexString) {
if (hexString != null && !hexString.equals("")) {
hexString = hexString.toUpperCase();
int length = hexString.length() / 2;
char[] hexChars = hexString.toCharArray();
byte[] d = new byte[length];
for(int i = 0; i < length; ++i) {
int pos = i * 2;
d[i] = (byte)(charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
}
return d;
} else {
return null;
}
}
public static byte charToByte(char c) {
return (byte)"0123456789ABCDEF".indexOf(c);
}
public static char[] encodeHex(byte[] data) {
return encodeHex(data, true);
}
public static char[] encodeHex(byte[] data, boolean toLowerCase) {
return encodeHex(data, toLowerCase ? DIGITS_LOWER : DIGITS_UPPER);
}
protected static char[] encodeHex(byte[] data, char[] toDigits) {
int l = data.length;
char[] out = new char[l << 1];
int i = 0;
for(int var5 = 0; i < l; ++i) {
out[var5++] = toDigits[(240 & data[i]) >>> 4];
out[var5++] = toDigits[15 & data[i]];
}
return out;
}
public static String encodeHexString(byte[] data) {
return encodeHexString(data, true);
}
public static String encodeHexString(byte[] data, boolean toLowerCase) {
return encodeHexString(data, toLowerCase ? DIGITS_LOWER : DIGITS_UPPER);
}
protected static String encodeHexString(byte[] data, char[] toDigits) {
return new String(encodeHex(data, toDigits));
}
public static byte[] decodeHex(char[] data) {
int len = data.length;
if ((len & 1) != 0) {
throw new RuntimeException("Odd number of characters.");
} else {
byte[] out = new byte[len >> 1];
int i = 0;
for(int j = 0; j < len; ++i) {
int f = toDigit(data[j], j) << 4;
++j;
f |= toDigit(data[j], j);
++j;
out[i] = (byte)(f & 255);
}
return out;
}
}
protected static int toDigit(char ch, int index) {
int digit = Character.digit(ch, 16);
if (digit == -1) {
throw new RuntimeException("Illegal hexadecimal character " + ch + " at index " + index);
} else {
return digit;
}
}
public static String StringToAsciiString(String content) {
String result = "";
int max = content.length();
for(int i = 0; i < max; ++i) {
char c = content.charAt(i);
String b = Integer.toHexString(c);
result = result + b;
}
return result;
}
public static String hexStringToString(String hexString, int encodeType) {
String result = "";
int max = hexString.length() / encodeType;
for(int i = 0; i < max; ++i) {
char c = (char)hexStringToAlgorism(hexString.substring(i * encodeType, (i + 1) * encodeType));
result = result + c;
}
return result;
}
public static int hexStringToAlgorism(String hex) {
hex = hex.toUpperCase();
int max = hex.length();
int result = 0;
for(int i = max; i > 0; --i) {
char c = hex.charAt(i - 1);
int algorism = 0;
if (c >= '0' && c <= '9') {
algorism = c - 48;
} else {
algorism = c - 55;
}
result = (int)((double)result + Math.pow(16.0D, (double)(max - i)) * (double)algorism);
}
return result;
}
public static String hexStringToBinary(String hex) {
hex = hex.toUpperCase();
String result = "";
int max = hex.length();
for(int i = 0; i < max; ++i) {
char c = hex.charAt(i);
switch(c) {
case '0':
result = result + "0000";
break;
case '1':
result = result + "0001";
break;
case '2':
result = result + "0010";
break;
case '3':
result = result + "0011";
break;
case '4':
result = result + "0100";
break;
case '5':
result = result + "0101";
break;
case '6':
result = result + "0110";
break;
case '7':
result = result + "0111";
break;
case '8':
评论0
最新资源