你真幸运。我几个月前不得不这样做。这是一个精简版,需要从命令行获取两个参数。命令行参数都是文件名…第一个是输入文件,第二个是输出文件。输入文件以二进制形式读取,输出文件以ASCII十六进制形式写入。希望您可以根据自己的需要进行调整。
import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileWriter;import java.io.IOException;public class BinToHex{ private final static String[] hexSymbols = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" }; public final static int BITS_PER_HEX_DIGIT = 4; public static String toHexFromByte(final byte b) { byte leftSymbol = (byte)((b >>> BITS_PER_HEX_DIGIT) & 0x0f); byte rightSymbol = (byte)(b & 0x0f); return (hexSymbols[leftSymbol] + hexSymbols[rightSymbol]); } public static String toHexFromBytes(final byte[] bytes) { if(bytes == null || bytes.length == 0) { return (""); } // there are 2 hex digits per byte StringBuilder hexBuffer = new StringBuilder(bytes.length * 2); // for each byte, convert it to hex and append it to the buffer for(int i = 0; i < bytes.length; i++) { hexBuffer.append(toHexFromByte(bytes[i])); } return (hexBuffer.toString()); } public static void main(final String[] args) throws IOException { try { FileInputStream fis = new FileInputStream(new File(args[0])); BufferedWriter fos = new BufferedWriter(new FileWriter(new File(args[1]))); byte[] bytes = new byte[800]; int value = 0; do { value = fis.read(bytes); fos.write(toHexFromBytes(bytes)); }while(value != -1); fos.flush(); fos.close(); } catch(Exception e) { e.printStackTrace(); } }}


