public class StringUtil {
public static String str = "696d706f7274";
public static void main(String[] args) {
System.out.println(new String(getBytes(str)));
}
public static boolean isOdd(String str) {
int length = str.length();
int isOdd = length % 2;
if (isOdd == 0)
return false;
else
return true;
}
public static byte[] getBytes(String str) {
boolean isOdd = isOdd(str);
int size = str.length();
if (isOdd) {
byte[] byteOdd = new byte[size / 2 + 1];
for (int j = 0, i = 0; i < str.length() - 1; i++) {
if (i % 2 == 0) {
byte a = getByteFromChar(str.charAt(i));
byte b = getByteFromChar(str.charAt(++i));
byteOdd[j++] = (byte) (a * 16 + b);
}
}
byteOdd[size / 2] = (byte) str.charAt(str.length() - 1);
return byteOdd;
} else {
byte[] byteEven = new byte[size / 2];
for (int j = 0, i = 0; i < str.length(); i++) {
if (i % 2 == 0) {
byte a = getByteFromChar(str.charAt(i));
byte b = getByteFromChar(str.charAt(++i));
byteEven[j++] = (byte) (a * 16 + b);
}
}
return byteEven;
}
}
public static byte getByteFromChar(char c) {
if (c == '0') {
return 0;
} else if (c == '1') {
return 1;
} else if (c == '2') {
return 2;
} else if (c == '3') {
return 3;
} else if (c == '4') {
return 4;
} else if (c == '5') {
return 5;
} else if (c == '6') {
return 6;
} else if (c == '7') {
return 7;
} else if (c == '8') {
return 8;
} else if (c == '9') {
return 9;
} else if (c == 'a') {
return 10;
} else if (c == 'b') {
return 11;
} else if (c == 'c') {
return 12;
} else if (c == 'd') {
return 13;
} else if (c == 'e') {
return 14;
} else if (c == 'f') {
return 15;
}
return -1;
}
}