2016-06-22 15 views
0

Ich versuche, ein Java-Programm zu machen, einige Texte in Offsets einer .bin-Datei (die Datei ist hexadezimal, aber es ist eine .bin-Datei) zu bearbeiten. Hier ist meine Klasse, die dies versucht:Open Text von einem gegebenen Offset (Java)

import org.apache.commons.codec.DecoderException; 
import org.apache.commons.codec.binary.Hex; 
import java.io.*; 

public class Class{ 
    public static String getOffsetText(String offset, File bin){ 
     String txt = null; 
     try{ 
      byte[] off = Hex.decodeHex(offset.toCharArray()); 
      txt = new String(off, "UTF-8"); 
     }catch(DecodeException | UnsupportedEncodingException e){ 
      e.printStackTrace(); 
     } 
     return txt; 
    } 
} 

Und hier ist der Fehler:

org.apache.commons.codec.DecoderException: Illegal hexadecimal character x at index 1 
    at org.apache.commons.codec.binary.Hex.toDigit(Hex.java:178) 
    at org.apache.commons.codec.binary.Hex.decodeHex(Hex.java:91) 

1. Hinweis: meine Klasse mit der main-Methode nur versucht, diese Methode in einer GUI zu verwenden. Außerdem zeigt Eclipse nicht, dass mein Code Fehler oder Warnungen enthält.

2. Hinweis: Die .bin-Dateien, die ich habe, sind möglicherweise verschlüsselt, aber ich bin mir nicht ganz sicher, ob sie das sind.

Antwort

0

Zunächst scheint Ihre Funktion die Datei nicht zu empfangen, da sie nur den Offset berechnet.

Ich glaube, dass das Problem ist, dass der Offset-String die Form "0x12346" ... hat, so wenn es versucht, x zu dekodieren, scheitert es, da es keine Ziffer ist. Ich würde vorschlagen, überprüfen Sie, ob die Zeichenfolge mit 0x beginnt, wenn ja, entfernen Sie sie und analysieren den Rest als Hexa

+0

Jetzt gibt es mir einen weiteren Fehler: 'org.apache.commons.codec.DecoderException: Ungerade Anzahl von Zeichen. \t bei org.apache.commons.codec.binary.Hex.decodeHex (Hex.java:82) ' – MethodHax

+0

Es gibt eine Antwort auf diese in der folgenden Link http://Stackoverflow.com/a/10143209/6372296 – TomerSH

+0

In Ordnung ! Es gibt jetzt keine Fehler. Das Textfeld, das den Text enthalten soll, ist jedoch immer leer. Auch wenn ich versuche, den Offset zu ändern. – MethodHax

Verwandte Themen