欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java实现十六进制数据与图片的互相转换,java十六进制,1 十六进制转图片jpg

来源: javaer 分享于  点击 39816 次 点评:27

java实现十六进制数据与图片的互相转换,java十六进制,1 十六进制转图片jpg


1 十六进制转图片jpg

import java.io.BufferedReader;import java.io.ByteArrayInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.nio.ByteBuffer;import java.nio.channels.FileChannel;import java.util.HashMap;import java.util.Map;/** * 十六进制转成图片 * @author Administrator * */public class Hex2Image {    public static void main(String[] args) throws Exception {        Hex2Image to=new Hex2Image();        InputStream is=new FileInputStream("f://aa.txt");        InputStreamReader isr = new InputStreamReader(is);        BufferedReader br = new BufferedReader(isr);        String str = null;        StringBuilder sb = new StringBuilder();        while ((str = br.readLine()) != null) {            System.out.println(str);            sb.append(str);        }        to.saveToImgFile(sb.toString().toUpperCase(),"f://dd.jpg");    }    public void saveToImgFile(String src,String output){           if(src==null||src.length()==0){               return;           }           try{               FileOutputStream out = new FileOutputStream(new File(output));               byte[] bytes = src.getBytes();               for(int i=0;i<bytes.length;i+=2){                   out.write(charToInt(bytes[i])*16+charToInt(bytes[i+1]));               }               out.close();           }catch(Exception e){               e.printStackTrace();           }       }       private int charToInt(byte ch){           int val = 0;           if(ch>=0x30&&ch<=0x39){               val=ch-0x30;           }else if(ch>=0x41&&ch<=0x46){               val=ch-0x41+10;           }           return val;       }}
                                2 图片转成16进制
import java.io.BufferedInputStream;  import java.io.BufferedReader;  import java.io.File;  import java.io.FileInputStream;  import java.io.FileOutputStream;  import java.io.FileWriter;  import java.io.IOException;  import java.io.InputStream;  import java.io.InputStreamReader;  import java.io.PrintWriter;  /**  * 图片转成十六进制  * @author Administrator  *  */  public class ImageToHex {      public static void main(String[] args) throws Exception {      try{           StringBuffer sb = new StringBuffer();           FileInputStream fis = new FileInputStream("f:/345.jpg");           BufferedInputStream bis = new BufferedInputStream(fis);           java.io.ByteArrayOutputStream bos=new java.io.ByteArrayOutputStream();          byte[] buff=new byte[1024];          int len=0;          while((len=fis.read(buff))!=-1){              bos.write(buff,0,len);          }          //得到图片的字节数组          byte[] result=bos.toByteArray();          System.out.println("++++"+byte2HexStr(result));          //字节数组转成十六进制          String str=byte2HexStr(result);          /*          * 将十六进制串保存到txt文件中          */          PrintWriter   pw   =   new   PrintWriter(new   FileWriter("f://today.txt"));                pw.println(str);                pw.close();          }catch(IOException e){           }   }      /*      *  实现字节数组向十六进制的转换方法一      */      public static String byte2HexStr(byte[] b) {          String hs="";          String stmp="";          for (int n=0;n<b.length;n++) {              stmp=(Integer.toHexString(b[n] & 0XFF));              if (stmp.length()==1) hs=hs+"0"+stmp;              else hs=hs+stmp;          }          return hs.toUpperCase();      }      private static byte uniteBytes(String src0, String src1) {          byte b0 = Byte.decode("0x" + src0).byteValue();          b0 = (byte) (b0 << 4);          byte b1 = Byte.decode("0x" + src1).byteValue();          byte ret = (byte) (b0 | b1);          return ret;      }      /*      *实现字节数组向十六进制的转换的方法二      */      public static String bytesToHexString(byte[] src){          StringBuilder stringBuilder = new StringBuilder("");          if (src == null || src.length <= 0) {              return null;          }          for (int i = 0; i < src.length; i++) {              int v = src[i] & 0xFF;              String hv = Integer.toHexString(v);              if (hv.length() < 2) {                  stringBuilder.append(0);              }              stringBuilder.append(hv);          }          return stringBuilder.toString();      }  }
相关栏目:

用户点评