hexzahlen eingeben

melmager

Erfahrenes Mitglied
Code:
class TTYs {
 int in;
  public void send(byte buff) {
    System.out.print(Integer.toHexString(buff)+" ");
  }
  public byte recv() {
    byte in[];
    in = new byte[16];
    System.out.print("eingabe ");
    try {
      System.in.read(in);
    }
    catch (Exception e) {
      System.out.println("Inputerr ");
    }
    String zeile = new String(in);
    System.out.println(" wert "+zeile);
    int iwert = Integer.valueOf(zeile,16);
    return (byte) (in[0]);
  }
}
Wo ist der Fehler?
bei mir wird kein verünftiger String erzeugt
und darum steigt natürlich der valueof mit exeption aus

was muss noch gemacht werden damit ein String erzeugt wird ohne Nullzeichen dran?

Edit :
Hier der Aktuelle Code der so geht
Code:
try {
      zlen = System.in.read(in);
    }
    catch (Exception e) {
      System.out.println("Inputerr ");
    }
    String zeile = new String(in,0,zlen);
    System.out.println(" wert "+zeile);
    try {
     b = (byte)Integer.parseInt(zeile.trim(),15);
    }
    catch (NumberFormatException e) {
    }
    System.out.println(" erg "+ b);

jetzt nur noch eine Frage :
warum muss noch trim gemacht werden ? ohne gibt es kein Ergebnis :-(
und bestimmt geht das auch Kürzer oder?
 
Zuletzt bearbeitet:
Hallo,

das trim ist notwendig, weil die Eingabe von der Console mit Enter abgeschlossen wird und damit im Eingabewert ein CRLF enthalten ist, z.B. ist die Eingabe nicht 22 sondern 22\r\n.
So etwas kann man bei der Ausgabe auf die Console schwer erkennen, ist aber im Debug-Mode sofort zu sehen.
 
Zurück