T
TobiGuest
Gast
Hallo zusammen,
ich versuche zur Zeit eine *.hex Datei einzulesen und diese Daten dann über TCP zu versenden.
Soweit eigentlich ganz einfach.
Nur komme ich mit dem ASCII encoding nicht ganz klar. Um zb. ein "AB" (hex) aus der hex Datei richtig zu senden, muss ich diese zuerst in eine Zahl umwandeln und dann daraus einen neuen ASCII Code erzeugen damit diese richtig bei meinem Empfänger ankommen (AVR)
Dies funktioniert nur teilweise und ich weis nicht wieso.
Beispiel:
Ausschnitt hex Datei:
0F931F93182F062F0E94863A812F806A
nun lese ich mit Hilfe eines Java Codes die Hex Sequenz Byteweis ein (also "0F" "93"...)
->
wenn ich nun den String x mit Hilfe von TCP sende ... folgender Code (aufs Wesentliche zusammenkopiert):
dann funktioniert das auch soweit.
Nur das der Hex Code 81 (viert letztes Byte in obiger Sequenz) falsch gesendet wird. Hier wird keine 0x81 gesendet sondern eine 3F ?!?!? (ersichtlich im Wireshark)
Ich kann mit nicht erklären wieso alles richtig gesendet wird nur das nicht.
Ich vermute es liegt irgendwie am Encoding... habe wie oben ersichtlich in Kommentar (charset) auch schon andere versucht, jedoch hilft das alles nicht.
Auffällig ist, das immer wenn ein Zeichen nicht unterstützt wird, eine "3F" gesendet wird?!? Wieso das??? Sicherlich ist das irgenwo so spezifiziert nur finde ich dazu nichts und weis auch nicht wonach ich wirklich suchen soll.
Kann mir jemand einen Tip geben an welcher Stelle ich drehen muss damit alle Werte richtig interpretiert werden?
Vielen Dank,
Tobi
ich versuche zur Zeit eine *.hex Datei einzulesen und diese Daten dann über TCP zu versenden.
Soweit eigentlich ganz einfach.
Nur komme ich mit dem ASCII encoding nicht ganz klar. Um zb. ein "AB" (hex) aus der hex Datei richtig zu senden, muss ich diese zuerst in eine Zahl umwandeln und dann daraus einen neuen ASCII Code erzeugen damit diese richtig bei meinem Empfänger ankommen (AVR)
Dies funktioniert nur teilweise und ich weis nicht wieso.
Beispiel:
Ausschnitt hex Datei:
0F931F93182F062F0E94863A812F806A
nun lese ich mit Hilfe eines Java Codes die Hex Sequenz Byteweis ein (also "0F" "93"...)
->
Java:
for(int i=0;i<s.length();i+=2){
byte[] b = { (byte)Integer.valueOf(s.substring(i, i+2), 16).intValue() };
//Charset charset = Charset.forName("US-ASCII");
x += new String(b);
//x += new String(b,charset);
toSend.append(x);
}
wenn ich nun den String x mit Hilfe von TCP sende ... folgender Code (aufs Wesentliche zusammenkopiert):
Java:
out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
out.write(toSend.toString());
dann funktioniert das auch soweit.
Nur das der Hex Code 81 (viert letztes Byte in obiger Sequenz) falsch gesendet wird. Hier wird keine 0x81 gesendet sondern eine 3F ?!?!? (ersichtlich im Wireshark)
Ich kann mit nicht erklären wieso alles richtig gesendet wird nur das nicht.
Ich vermute es liegt irgendwie am Encoding... habe wie oben ersichtlich in Kommentar (charset) auch schon andere versucht, jedoch hilft das alles nicht.
Auffällig ist, das immer wenn ein Zeichen nicht unterstützt wird, eine "3F" gesendet wird?!? Wieso das??? Sicherlich ist das irgenwo so spezifiziert nur finde ich dazu nichts und weis auch nicht wonach ich wirklich suchen soll.
Kann mir jemand einen Tip geben an welcher Stelle ich drehen muss damit alle Werte richtig interpretiert werden?
Vielen Dank,
Tobi