Hallo Zusammen!
Ich arbeite derzeit an einem Programm, bei welchem ich einen String mit mehreren, verschiedenen Hex-Werten in einem String ( bspw. "FF 23 B7 C3 10 69 AA") bekomme und diese in einem byte-Array abspeichern will.
Mein Problem hierbei ist, dass manche dieser Werte falsch gewandelt werden. Beispielsweise wird "FF" zu "-1" und "B7" zu "-73".
Hierbei habe ich ein gewisses Schema entdeckt:
„FF“ => 1111 1111 => invertieren: 0000 0000 => +1: 0000 0001 => *(-1): Ergebnis = (-1)
„B7“ => 1011 0111 => invertieren: 0100 1000 => +1: 0100 1001 => *(-1): Ergebnis = (-73)
Hier der relevante Codeausschnitt:
Alternative Umformalgorithmen (bringen das selbe Ergebnis!):
Ich hoffe ihr könnt mir weiterhelfen!
Danke dafür schonmal an dieser Stelle!
Mit freundlichen Grüßen,
Julian R.
Ich arbeite derzeit an einem Programm, bei welchem ich einen String mit mehreren, verschiedenen Hex-Werten in einem String ( bspw. "FF 23 B7 C3 10 69 AA") bekomme und diese in einem byte-Array abspeichern will.
Mein Problem hierbei ist, dass manche dieser Werte falsch gewandelt werden. Beispielsweise wird "FF" zu "-1" und "B7" zu "-73".
Hierbei habe ich ein gewisses Schema entdeckt:
„FF“ => 1111 1111 => invertieren: 0000 0000 => +1: 0000 0001 => *(-1): Ergebnis = (-1)
„B7“ => 1011 0111 => invertieren: 0100 1000 => +1: 0100 1001 => *(-1): Ergebnis = (-73)
Hier der relevante Codeausschnitt:
Java:
String string = "FF";
int len = string.length();
byte[] byteArray = new byte[len / 2];
for (int x = 0; x < len; x += 2) {
byteArray [x / 2] = (byte) ((Character.digit(string.charAt(x), 16) << 4)
+ Character.digit(string.charAt(x+1), 16));
}
Alternative Umformalgorithmen (bringen das selbe Ergebnis!):
Java:
for (int x=0;x<string.length()/2;x++) {
byteArray[x] = (Integer.decode( "0x"+string.substring(x*2, (x+1)*2))).byteValue();
}
/////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
String hexVal = "0123456789ABCDEF";
for( int x = 0; x < len; x += 2 ) {
//make a bit representation in an int of the hex value
int hn = hexVal.indexOf( string.charAt( x ) );
int ln = hexVal.indexOf( string.charAt( x + 1 ) );
//now just shift the high order nibble and add them together
byteArray[x/2] = (byte)( ( hn << 4 ) | ln );
}
Ich hoffe ihr könnt mir weiterhelfen!
Danke dafür schonmal an dieser Stelle!
Mit freundlichen Grüßen,
Julian R.