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.