PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java: ASCII in String convertieren


tomtom
2004-05-06, 18:33:59
Hi!

Ich hab in nem Programm von mir eine Funktion, in dem ich einen Filereader verwende. In der Textfile steht die Zahl '1'. Bei der Auswertung erhalte ich jedoch nur die Zahl 49 - das ASCII Zeichen für 1!!!

Wie kann ich diesen ASCII Code in einen String umwandeln???
Bitte um schnelle Hilfe!

MFG terminator2k3

c.p.d.
2004-05-06, 19:04:34
Scheint mir etwas komisch, das die read-Funktion ein char zurückgibt. Dieses wiederum ist in java mit UTF-irgendwas kodiert.

Wäre nützlich, wenn du die betreffenden Codezeilen posten könntest.

HellHorse
2004-05-06, 19:51:02
Den int der read() liefert nach char casten (mit (char) ) sollte reichen.

mithrandir
2004-05-07, 08:14:12
HellHore hat wahrscheinlich recht. Ich schätze du benutzt einen FileReader. Wenn du uns erzählen würdest, was genau du eigentlich aus einer Textdatei auslesen möchtest, könnten wir dir evtl. bessere Tips geben. Es gibt nämlich sehr viele Reader-Klassen und mit sehr unterschiedlichen read-Methoden. Bei Textfiles ist es fraglich, ob ein zeichenweises Einlesen nicht etwas langsam sein könnte. Ich verwende z.B. oft einen BufferedReader, aber egal. Weil ich gerade den Code zur Hand habe, hier nochmal die Geschichte mit dem cast auf char:

try
{
FileReader reader = new FileReader( "./test.txt" );

int i = -1;

while( (i = reader.read()) != -1 )
{
System.out.println( "Integer: <"+i+">, Character: <"+(char)i+">" );
}

reader.close();
}
catch( FileNotFoundException fnfex )
{
fnfex.printStackTrace();
}
catch( IOException ioex )
{
ioex.printStackTrace();
}
bye, mith

ethrandil
2004-05-07, 15:18:02
Also, ich habe das nun so verstanden, dass du aus deinem Text-File eine Zahl auslesen willst. Richtig?

Diese Zahl ist bei dir 49 und nicht 1.

Du kannst nun zwei Dinge tun - eins ist schnell eins ist flexibel ;)

Schnell erhälst du die Zahl, die ein char repräsentiert, indem du '1' minus '0' rechnest. Allerdings geht das so nur von Zahlen von 0 - 9.
Flexibel erhälst du sie über Integer.parseInt(String) also z.B. Integer.parseInt("1");

Hoffe geholfen zu haben.

- Eth

tomtom
2004-05-07, 15:53:42
Danke mal für die Antworten...

Auslesen will ich eigentlich nicht(nur) Zahlen. Das mit der 1 war nur zu Demonstrationszwecken. Eigentlich will ich daraus ein Passwort, also einen String auslesen. Und dieses Passwort soll mit einer Usereingabe verglichen werden(Altes Passwort eingeben, bei Passwortwechsel soll werden)

Und leider kann ich das Passwort aus der txt-File(das Passwort soll später noch verschlüsselt werden) nicht mit der User-Eingabe vergleichen, da es ja kein String ist.

---------------------------
Beispiel:
Passwort in der txt-Datei: bsp
Usereingabe für den Vergleich: bsp
Nachdem der Filereader das Ganze ausgelesen hat, krieg ich aber anstatt von bsp die Zahlenfolge 98115112 --> das Wort bsp im ASCII Code

Und 98115112 != "bsp"
--> Ich kanns nicht vegleichen da es ja automatisch falsch ist.
Ich müsste also 98115112 wieder umwandeln können in bsp.

Ich hoffe ich habs nun gut erklärt, sonst bitte fragen!!!
THX, MFG

[EDIT]
Ich werd mal versuchen die Benutzereingabe in einen Integer umzuwandeln, dann müsst ichs theoretisch vergleichen können!

HellHorse
2004-05-07, 21:43:32
Original geschrieben von terminator2k3
Beispiel:
Passwort in der txt-Datei: bsp

Wo ist das Problem?

BufferedReader reader = new BufferedReader(new FileReader( "./test.txt" ));
String passwortImFile = reader.readLine();
reader.close();
String passwortVonUserinput = ...;
if (passwortImFile.equals(passwortVonUserinput)) {
System.out.println("Passwort OK");
} else {
System.out.println("Passwort NOK");
}

(ungetestet)

tomtom
2004-05-08, 13:26:45
THX, Hab noch nie mit nem Buffered Reader gearbeitet! Schaut jedenfalls gut aus! Danke an Alle!!! MFG