I wrote a program that converts a hexadecimal string into a byte array, eg "2e65" produces [2,14,6,5].
Is there a way to do it with less lines of code or without using the ASCII table values.
public static byte[] stringToData( String dataString) {
byte [] hexStringToByteArr = new byte[dataString.length()];
for ( int i = 0; i < dataString.length(); i++) {
char c = dataString.charAt(i);
if ( c == 48 ) { hexStringToByteArr[i] = 0;}
if ( c == 49 ) { hexStringToByteArr[i] = 1;}
if ( c == 50 ) { hexStringToByteArr[i] = 2;}
if ( c == 51 ) { hexStringToByteArr[i] = 3;}
if ( c == 52 ) { hexStringToByteArr[i] = 4;}
if ( c == 53 ) { hexStringToByteArr[i] = 5;}
if ( c == 54 ) { hexStringToByteArr[i] = 6;}
if ( c == 55 ) { hexStringToByteArr[i] = 7;}
if ( c == 56 ) { hexStringToByteArr[i] = 8;}
if ( c == 57 ) { hexStringToByteArr[i] = 9;}
if ( c == 97 ) { hexStringToByteArr[i] = 10;}
if ( c == 98 ) { hexStringToByteArr[i] = 11;}
if ( c == 99 ) { hexStringToByteArr[i] = 12;}
if ( c == 100 ) {hexStringToByteArr[i] = 13;}
if ( c == 101 ) {hexStringToByteArr[i] = 14;}
if ( c == 102 ) {hexStringToByteArr[i] = 15;}
}
return hexStringToByteArr;
}
public static void main(String [] args) {
String pracString = "2e65";
System.out.println(Arrays.toString(stringToData(pracString)));
}
2e65should be two bytes, not four.hexStringToByteArr[i]=Character.digit(c,16);instead of all the if statements.