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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser code liest Ihre Eingabe fileof HEx und schreiben in eine Datei als ASCII-Zeichen