Java:文件到十六进制
发布时间:2020-12-14 05:39:52 所属栏目:Java 来源:网络整理
导读:我有一个 Java文件 FileInputStream in = null;try{ in = new FileInputStream("C:pic.bmp");}catch{} 我想将pic.bmp转换为十六进制数值的数组,因此我可以将其编辑并保存为修改版本. 有没有一个java类来做这个? 解决方法 你运气好几个月前我不得不这样做.
我有一个
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(); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |