我有一个
Java文件
- FileInputStream in = null;
- try{
- in = new FileInputStream("C:\\pic.bmp");
- }catch{}
我想将pic.bmp转换为十六进制数值的数组,因此我可以将其编辑并保存为修改版本.
有没有一个java类来做这个?
解决方法
你运气好几个月前我不得不这样做.这是一个从压缩版本,从命令行接受两个参数.两个comand行参数都是文件名…第一个是输入文件,第二个是输出文件.输入文件以二进制读取,输出文件写为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();
- }
- }
- }