简体   繁体   English

在Java中读取hex文件并将其转换为ascii

[英]Read hex file in java and traduce it into ascii

Good Morning i have a serius problem. 早上好,我有一个严重的问题。 I need to read a file in hex ​​and translate it into ascii. 我需要以十六进制读取文件并将其转换为ascii。 I also need to write the ascii on another file. 我还需要在另一个文件上写ascii。 I tried 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;
}

the problem is that I read the wrong values ​​for example read 83 bat the original file contains 84 问题是我读取了错误的值,例如读取83 bat原始文件包含84

This code will read your input fileof HEx and write into a file as ASCII characters 此代码将读取您的HEx输入文件并以ASCII字符写入文件

public static void main(String[] args) throws FileNotFoundException, IOException {
        BufferedReader br = new BufferedReader(new FileReader("fileAscii")); // to read a single line from the file
        int read;
        String src= new String();       // to store the string obtained from buffered reader
        PrintWriter writer= new PrintWriter("fileOutput");
        src=br.readLine();              // read an input line from the file

        while(src!=null){
            src=src.replace(" ", "");   // Trim out the spaces
            for(int i=0;i<src.length();i+=2){
                read=Integer.parseInt(src.substring(i,i+2), 16);    // convert the String to hex integer 
                writer.print((char)read);                           // convert hex to char and write into file
            }
            src=br.readLine();
        }
        writer.flush();
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM