printable ASCII output erzeugen

Status
Nicht offen für weitere Antworten.

schmeckzilla

Mitglied
Hallo,

ich versuche gerade eine binäre Datei einzulesen und einen Hex-Dump zu erzeugen. Neben dem Hexdump von 16 Bytes soll dann der Inhalt der Datei als Text angezeigt werden.

Das funktioniert auch soweit so gut.

Auszug
00000000: 696d706f 7274206a 6176612e 696f2e2a import java.io.*
00000010: 3b0a696d 706f7274 206a6176 612e7574 ;
import java.ut
00000020: 696c2e2a 3b0a696d 706f7274 206a6176 il.*;
import jav
00000030: 612e7371 6c2e5469 6d657374 616d703b a.sql.Timestamp;
00000040: 0a0a7075 626c6963 20636c61 73732065

public class e

Leider werden dort auch Zeilenumbrüche eingefügt und so weiter.

Eigentlich will ich jedes nicht druckbare Zeichen durch einen "." ersetzen. Wie finde ich aber heraus, welches Zeichen nicht druckbar ist?

Gibt es da eine Klasse?

Code:
import java.io.*;
import java.util.*;
import java.sql.Timestamp;

public class example2 {

    static FileInputStream myFIS = null;
    static FileOutputStream myFOS = null;
    static PrintStream myPOS = null;

    static public void main(String[] args) {

        PrintStream e = System.err;

        try {
            myPOS = new PrintStream ( args[0]+".hex" );
            long now = new Date().getTime();
            myPOS.printf( "Hex dump of file %s %s %n", args[0], new Timestamp(now) );
            myFIS = new FileInputStream( args[0] );

            while ( myFIS.available() > 0 )
                dump( (byte)myFIS.read() );

        } catch (IOException x) {
            e.println( "Exception: " + x.getMessage() );
        }
    }

    static private long byteCount = 0;
    static private String byteString = "";
    static private Character actChar = null;


    static private void dump(byte b) {

        if ( byteCount % 16 == 0 ) {
            myPOS.print( "  " + byteString );
            byteString = "";

            myPOS.printf( "%n%08x:", byteCount );
        }

        // output a space every 4 bytes
        if ( byteCount++ % 4 == 0 )
            myPOS.print("  ");

        // dump the byte as 2 hex chars
        myPOS.printf( "%02x", b );

        actChar = new Character( (char) b);

        // try to eleminate non-printable ASCII-output
        if ( Character.isISOControl(actChar) )
            actChar = new Character('.');

        // save the char in the String
        byteString += new Character( (char) b ).toString();

    }

}
 

Bleiglanz

Gesperrter Benutzer
java.util.regex

Code:
\p{Punct}  	Punctuation: One of !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
\p{Graph} 	A visible character: [\p{Alnum}\p{Punct}]
\p{Print} 	A printable character: [\p{Graph}]

eventuell mit replaceAll("[^\\p{Print}]",".")

habs aber nicht getestet
 

schmeckzilla

Mitglied
Mist,
bin jetzt selbst draufgekommen. Mein Ansatz war eigentlich soweit richtig. ;-)

Hab in der Zeile 58 leider einen Fehler gehabt. Diese muss korrekt so lauten:

byteString += actChar.toString();

@Bleiglanz
Das mit dem RegExp sollte eigentlich auch funtkionieren. An reguläre Ausdrücke hatte ich nicht gedacht. Als weitere Variante hatte ich noch:
Code:
if ( (int) actChar.charValue() < 32 ||  (int) actChar.charValue() > 126 )
       actChar = new Character('.');

Aber als selbst das nicht funktioniert hat, habe ich den Fehler in Zeile 58 gefunden. Mein modifizierter Character wurde nicht verwendet. :-(
 

schmeckzilla

Mitglied
Der korrekte Output sieht jetzt so aus:
00000000: 696d706f 7274206a 6176612e 696f2e2a import java.io.*
00000010: 3b0a696d 706f7274 206a6176 612e7574 ;.import java.ut
00000020: 696c2e2a 3b0a696d 706f7274 206a6176 il.*;.import jav
00000030: 612e7371 6c2e5469 6d657374 616d703b a.sql.Timestamp;
00000040: 0a0a7075 626c6963 20636c61 73732065 ..public class e
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Erste Schritte While Schleife / Ausgabe von buchstabe & ASCII Wert Java Basics - Anfänger-Themen 4
obiwanke Ziffern durch ASCII Character ersetzen Java Basics - Anfänger-Themen 8
U Ascii wert verschieben, wie möglich? Java Basics - Anfänger-Themen 3
Sonas814 ASCII-Tabelle Java Basics - Anfänger-Themen 2
J Umwandlung String zu ASCII-Wert und anders Java Basics - Anfänger-Themen 17
E ASCII-Code in Java ausgeben Java Basics - Anfänger-Themen 6
krgewb ASCII-Tabelle Java Basics - Anfänger-Themen 12
O Ascii Tasse Ausgeben Java Basics - Anfänger-Themen 8
S ASCII String zu int Java Basics - Anfänger-Themen 5
R Fehler bei ASCII Char zu Int Umwandlung Java Basics - Anfänger-Themen 2
J ASCII - Raute Java Basics - Anfänger-Themen 18
K Ascii Converter mit Swing Java Basics - Anfänger-Themen 4
P ASCII-Tabelle Java Basics - Anfänger-Themen 5
C String mit ASCII vergleichen + gefundene Gemeinsamkeiten ausgeben Java Basics - Anfänger-Themen 21
H String in Ascii-Werte für Verschüsselungssystem Java Basics - Anfänger-Themen 8
A OOP Buchstaben mit ASCII Werten darstellen Java Basics - Anfänger-Themen 1
G Wert in Ascii Datei ändern, ohne die Datei neu zu schreiben Java Basics - Anfänger-Themen 24
A int in ASCII Konvertieren Java Basics - Anfänger-Themen 6
S ASCII Code aus String herauslesen Java Basics - Anfänger-Themen 3
Rayo Eingelesene Ascii Zahlen wie normale Zahlen prüfen Java Basics - Anfänger-Themen 4
T ASCII Art von Bild erstellen. Java Basics - Anfänger-Themen 32
A String(Ascii ) in String umwandeln Java Basics - Anfänger-Themen 3
D Von short zu Ascii-Code Java Basics - Anfänger-Themen 2
P Erste Schritte Zufallszahl in Ascii-Code umwandeln ?!? Java Basics - Anfänger-Themen 6
S String mit ASCII/HTML Zeichen darstellen Java Basics - Anfänger-Themen 10
C ASCII-Art Haus Java Basics - Anfänger-Themen 18
C ASCII CODES in Linux anders als auf Windows? Java Basics - Anfänger-Themen 4
J Ascii Zeichen von einem String umwandeln und ausgeben Java Basics - Anfänger-Themen 11
T String to ASCII Java Basics - Anfänger-Themen 3
K ASCII-Art mit for Schleife Java Basics - Anfänger-Themen 12
R ASCII-Tabelle Java Basics - Anfänger-Themen 6
achillesat aus .java in ascii datei Java Basics - Anfänger-Themen 12
P ASCII-Bild einlesen Java Basics - Anfänger-Themen 13
I Ascii Bild mittels Scanner einlesen Java Basics - Anfänger-Themen 9
D prüfen ob string nur ascii zeichen enthält Java Basics - Anfänger-Themen 7
G Textdokument ASCII ändern Java Basics - Anfänger-Themen 10
P Ascii Bild einlesen Java Basics - Anfänger-Themen 6
P Ascii Java Basics - Anfänger-Themen 4
C ASCII Codes in Buchstaben umwandeln Java Basics - Anfänger-Themen 2
T Ascii String zu Hex Wert wandeln? Java Basics - Anfänger-Themen 6
S Ascii Datei parsen Java Basics - Anfänger-Themen 2
S Hex-String in Ascii-String umwandeln! Java Basics - Anfänger-Themen 7
J String nur mit ASCII-Zeichen Java Basics - Anfänger-Themen 4
D Ascii-Code ersetzen mit Umlauten Java Basics - Anfänger-Themen 6
L Ausgabe in arabischen Zahlen statt in ASCII Java Basics - Anfänger-Themen 9
M Ascii-Filtering von Usereingaben Java Basics - Anfänger-Themen 3
K String(ASCII) to BigInteger Java Basics - Anfänger-Themen 2
T ASCII Tabelle darstellen Java Basics - Anfänger-Themen 7
G ASCII -> Unicode ? Java Basics - Anfänger-Themen 5
G ASCII -> String Java Basics - Anfänger-Themen 2
N Eclipse und ascii codes, welchen wählen? Java Basics - Anfänger-Themen 3
T byte 2 ASCII ? Java Basics - Anfänger-Themen 2
M Strings nach ASCII Zeichen trennen. Java Basics - Anfänger-Themen 7
C Überprüfung ob Eingabe Text/ASCII Java Basics - Anfänger-Themen 24
F Warum Ausgabe in ASCII Dez. Java Basics - Anfänger-Themen 3
L Fehler bei den ASCII Zeichen Java Basics - Anfänger-Themen 9
K ASCII Schnittstelle. Java Basics - Anfänger-Themen 3
T Bestimmte Zeilen aus ASCII File löschen? Java Basics - Anfänger-Themen 2
L auf ASCII Zeichen prüfen Java Basics - Anfänger-Themen 10
O Ascii Dateien schreiben Java Basics - Anfänger-Themen 5
H Escape Sequenz ASCII Wert als Oktalzahl Java Basics - Anfänger-Themen 6
B ASCII-Datei einlesen und zerlegen Java Basics - Anfänger-Themen 5
H ascii-xml Konverter Java Basics - Anfänger-Themen 4
B Formular-Eingabe in ASCII-Datei speichern Java Basics - Anfänger-Themen 3
S Umrechner Ascii Integer Java Basics - Anfänger-Themen 2
G Ascii Zeichen? Java Basics - Anfänger-Themen 2
X ASCII-Code => Zeichen / Zeichen => ASCII-Code Java Basics - Anfänger-Themen 2
G Problem bei der Darstellung von bestimmten ASCII-Zeichen Java Basics - Anfänger-Themen 4
B speichern->"neueZeileZeichen"ASCII 1310 in 13 u Java Basics - Anfänger-Themen 10
W char in ASCII-Zeichen umwandeln Java Basics - Anfänger-Themen 4
Dilandau ascii code von zeichen in string ermitteln? Java Basics - Anfänger-Themen 9
G Berechnet ASCII-Code Java Basics - Anfänger-Themen 2
emreiu Formatiertes Output bei Insertion Sort Java Basics - Anfänger-Themen 6
Kotelettklopfer Output korrekt trotz falschem Lösungsweg !? Java Basics - Anfänger-Themen 99
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
B Output Java Basics - Anfänger-Themen 1
J Fragen zu Input/Output Java Basics - Anfänger-Themen 3
O Input/Output newbile und keine Ahnung! Java Basics - Anfänger-Themen 16
K output Java Basics - Anfänger-Themen 3
Harlequin Compiler-Fehler Text Adventure - "Long Output" Fehler Java Basics - Anfänger-Themen 3
E 2 Matrizen multiplizieren - Output fehlt... Java Basics - Anfänger-Themen 5
A Input/Output Prozess Output genauso in der Konsole ausgeben Java Basics - Anfänger-Themen 0
J Input/Output Den zweiten Output erst nach Eingabe ausgeben Java Basics - Anfänger-Themen 4
A Erste Schritte Java Output wird nicht angezeigt Java Basics - Anfänger-Themen 7
GoldenShadow Input/Output Verschiedene Versionen von Input/Output Java Basics - Anfänger-Themen 3
K cmd output.txt Java Basics - Anfänger-Themen 5
T Output in CMD anzeigen lassen? Java Basics - Anfänger-Themen 1
D Runtime exec output wiedergeben Java Basics - Anfänger-Themen 1
B Input/Output output Datenstrom filtern Java Basics - Anfänger-Themen 0
J Möchte gern den Konsolen Output auf JTextPane umleiten Java Basics - Anfänger-Themen 4
fLooojava Output in einer Textarea einfärben Java Basics - Anfänger-Themen 7
fLooojava OOP Übergabe/Output in Textfield Java Basics - Anfänger-Themen 4
E Input/Output convert string to two dimensional char and output = matrix Java Basics - Anfänger-Themen 2
S Output Problem Java Basics - Anfänger-Themen 2
O OOP Input & Output in der GUI-Programmierung Java Basics - Anfänger-Themen 2
C Input & Output Frage Java Basics - Anfänger-Themen 4
E Input & Output Problem Java Basics - Anfänger-Themen 7
F Input/Output Falsches Output in Datei! Java Basics - Anfänger-Themen 4
G Output aus fremden Klasse auswerten Java Basics - Anfänger-Themen 8
C Input/Output Dynamischer Output von Arrays Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben