Lesen hex-Datei in java und traduce in ascii

Guten Morgen ich habe ein serius problem.
Ich brauche zum Lesen einer Datei im hex-und übersetzen es in ascii.
Ich muss auch schreiben das ascii auf eine andere Datei.
Ich versuchte so:

/**
 * @param args the command line arguments
 */
public static void main(String[] args) throws FileNotFoundException, IOException {
    FileInputStream in = new FileInputStream("fileAscii");
    int read;
    String hex = "";
    int count = 0;
    String valueRead="";
    PrintWriter writer= new PrintWriter("fileOutput");

    while ((read = in.read()) != -1) {
        count++;
        valueRead= Integer.toHexString(read);
        if(valueRead.length()==1){
            hex=hex+"0";
        }
        hex = hex + valueRead;
        if (is16Multipler(count)) {

            System.out.println(hex);
            String sb = "";
            StringBuilder temp = new StringBuilder();
            for (int i = 0; i < hex.length() - 1; i += 2) {

                //grab the hex in pairs
                String output = hex.substring(i, (i + 2));
                //convert hex to decimal
                int decimal = Integer.parseInt(output, 16);
                //convert the decimal to character
                sb=sb+(char) decimal;


            }
            if(!sb.equals("00000000000000000000000000000000"))
            {
               writer.println(sb.toString());
            }


               hex = "";
        }
    }
}


public static boolean is16Multipler(int number) {
    if (number % 16 == 0) {
        return true;
    }
    return false;
}

das problem ist, dass ich lese die falschen Werte, wie zum Beispiel read 83 bat die original-Datei enthält 84

  • Das Programm scheint zu konvertieren bytes liest es auf hex-und nicht Umgekehrt.
  • Es Lesen: 6f726b73686f702e636f6d002e466c0b 24d77901080009000000000014031f06 2e31616e64312e6974002e487b937d25, dass im hex-format
  • Es gibt keine solche Sache wie eine 'hex-file'. Es ist Binär und text. Dies ist mit binären. Was dein code tut, ist das konvertieren von Binär zu hex und hex zu ASCII nicht immer exakt. Der Punkt, entgeht mir.
  • Es gibt natürlich echte "hex" - Dateien - zum Beispiel jene, die die binäre Daten enthalten, die programmiert werden, um einen ROM-chip (oder heute, micro-controller FLASH), dargestellt in lesbarer (und 7-bit-übertragbare) ASCII-codierte hex-Regel Zeile für Zeile mit, indem record-Typ und-Adresse und trailing-Prüfsumme. Aber diese Frage betrifft ein Missverständnis, anstatt wie eine echte Falle.
Schreibe einen Kommentar