Hexa in String

Xerxes20

Mitglied
Guten tag liebe Gemeinde,

ich habe mich hier angemeldet, weil ich bei Problemen immer auf diese Seite gestoßen bin und die Probleme immer gelöst wurden :)

Ich habe folgendes Problem:

Ich versuche Strings, die in Hexa umgewandelt wurden, wieder in Hexa umzuwandeln.
Das klappt auch, leider nur mit einzelnen Zeichen wie 61 oder 68.

Wenn ich aber jetzt z.B. hallo (in Hexa: "68616c6c6f") auslesen möchte, gibt er ein chinesisches Zeichen aus.

Hier die Methode wo ich Hexa in Strings umwandle:


Aber ich glaube er mag irgendwie meine Umwandlung nicht:


Vielen Dank im voraus!
 
Zuletzt bearbeitet:
Moin,

bin mir nicht ganz sicher, ob es das ist, was Du suchst, aber statt "Long.parseLong..." könntest Du mal
Java:
long lVal = 12345;
Long.toHexString( lVal )
versuchen !

Gruß
Klaus
 
Hallo,

danke erstmal für die Antwort :)

Ich möchte ja die Hexa aus einer Text Datei auslesen, ich weiß nicht wo ich das genau implementieren soll.

MFG
 
Moin,

:confused:

Ist jetzt Deine Frage, wie Du die Zeichen umwandelst oder möchtest Du wissen, wie Du (Text-)Dateien ausliest :confused:

Gruß
Klaus
 
Moin,

hmm, da ich aus Deinem Code aus der Start-Post nicht wirklich schlau werde, hier nochmal detailliert nachgefragt :
- Du hast eine beliebige Textdatei, die Du auslesen willst
- dann möchtest Du die einzelnen ausgelesenen Zeilen in Strings umwandeln und einem Texteditor anzeigen

Code:
String h=HextoString(Long.parseLong(br.readLine(),16));
Texteditor.textArea.setText(h);

was genau ist hier denn br :confused:
was soll das Long.parseLong hier bewirken, wenn es doch eine Textzeile ist :confused:

Wie genau liest Du denn die Datei ein :confused:
Hast Du einen FileInputStream :confused:

Gruß
Klaus


[EDIT]
Vlt hilft Dir sowas (ungetestet !!) :
Java:
byte[] bText = new byte[1000];
int iLen;
FileInputStream in = null;
File meineDatei = new File( meinDateiName );
in = new FileInputStream( meineDatei );

while( (iLen = in.read(bText) ) > 0 )
{
	String strText = new String( bText, 0, len );
	System.out.println( strText );
        System.out.println( "Gelesene Bytes : " + iLen + "  / Stringlänge : " + strText.length());
}
in.close();
 
Zuletzt bearbeitet:
Also ich baue mir gerade einen Texteditor, der die Strings beim speichern in Hexa umwandelt und wenn man die datei öffnet sollen die Hexa wieder in lesbare Strings umgewandelt werden.

Das umwandeln in Hexa habe ich schon hinbekommen. Aber das zurückumwandeln fällt mir irgendwie schwer.

br ist in dem Fall :

target = fcsave.getselectedFile();
br= BufferedReader(FileReader (target));

fcsave ist ein FileChooser

Mit br.readLine() soll er die Datei auslesen und in die TextArea schreiben.


Ich habe deinen Code ausprobiert, ausgegeben wird dabei :

68616c6c6f
Gelesene Bytes : 10 / Stringlänge : 10
 
Zuletzt bearbeitet:
Moin,

ahh, ein BufferdReader ;-]

Also, zuerst einmal ist Dein
Java:
String h=HextoString(Long.parseLong(br.readLine(),16));
ziemlicher Unsinn !
Schau' Dir mal die API zu parseLong an (http://download.oracle.com/javase/6/docs/api/ und dort im Package java.lang !).
Die Funktion erwartet einen String und gibt ggf. einen Long-Wert zurück!
Daraus mit dem "HextoString" (besser übrigens "hexToString", da Camel-case :-)) wieder einen String machen wollen, ist wie gesagt Blödsinn, da Dein Argument (die Rückgabe von "br.readline()") ja eh' schon ein String ist .....

Zudem liest Du mit "br.readline()" ZEILENWEISE ein (siehe ebenfalls o. g. API), musst also ggf. eine Schleife drumrum basteln :p

Im Prinzip also sowas:
Java:
BufferedReader br;
String strLine;

br = new BufferedReader( new FileReader(meinDateiName) );

try 
{
	while( (strLine = f.readLine()) != null ) 
        {
        	strLine = strLine.trim();
                // EDIT  mache was mit diesem String ....
	}
}

Gruß
Klaus
 
Zuletzt bearbeitet:
Aha ... und ... :confused:
um mal so kurz zu antworten wie Du :-(

Wie sieht jetzt Dein AKTUELLER Code aus ?
Hast Du meinen Vorschlag von oben wenigstens mal ausprobiert :confused:

Gruß
Klaus
 
Zurück