おはようございます 深刻な問題があります。ファイルを 16 進数で読み取り、ASCII に変換する必要があります。また、別のファイルに ascii を書き込む必要があります。私はそうしようとしました:
/**
* @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;
}
問題は、間違った値を読み取ったことです。たとえば、83 バットを読み取り、元のファイルには 84 が含まれています。