1.十六进制转图片jpg

来源:互联网 发布:网络黄金egd国家认可嘛 编辑:程序博客网 时间:2024/06/07 16:45

1.十六进制转图片jpg

[java] view plaincopyprint?
  1. import java.io.BufferedReader;  
  2. import java.io.File;  
  3. import java.io.FileInputStream;  
  4. import java.io.FileOutputStream;  
  5. import java.io.InputStream;  
  6. import java.io.InputStreamReader;  
  7.   
  8. /** 
  9.  * 十六进制转成图片 
  10.  */  
  11. public class Hex2Image  
  12. {  
  13.     public static void main(String[] args) throws Exception  
  14.     {  
  15.         Hex2Image to = new Hex2Image();  
  16.         InputStream is = new FileInputStream("V:/aaa.txt");  
  17.         InputStreamReader isr = new InputStreamReader(is);  
  18.         BufferedReader br = new BufferedReader(isr);  
  19.         String str = null;  
  20.         StringBuilder sb = new StringBuilder();  
  21.         while ((str = br.readLine()) != null)  
  22.         {  
  23.             System.out.println(str);  
  24.             sb.append(str);  
  25.         }  
  26.         to.saveToImgFile(sb.toString().toUpperCase(), "V:/bbb.jpg");  
  27.     }  
  28.   
  29.     public void saveToImgFile(String src, String output)  
  30.     {  
  31.         if (src == null || src.length() == 0)  
  32.         {  
  33.             return;  
  34.         }  
  35.         try  
  36.         {  
  37.             FileOutputStream out = new FileOutputStream(new File(output));  
  38.             byte[] bytes = src.getBytes();  
  39.             for (int i = 0; i < bytes.length; i += 2)  
  40.             {  
  41.                 out.write(charToInt(bytes[i]) * 16 + charToInt(bytes[i + 1]));  
  42.             }  
  43.             out.close();  
  44.         }  
  45.         catch (Exception e)  
  46.         {  
  47.             e.printStackTrace();  
  48.         }  
  49.     }  
  50.   
  51.     private int charToInt(byte ch)  
  52.     {  
  53.         int val = 0;  
  54.         if (ch >= 0x30 && ch <= 0x39)  
  55.         {  
  56.             val = ch - 0x30;  
  57.         }  
  58.         else if (ch >= 0x41 && ch <= 0x46)  
  59.         {  
  60.             val = ch - 0x41 + 10;  
  61.         }  
  62.         return val;  
  63.     }  
  64. }  
2.图片转成16进制
[java] view plaincopyprint?
  1. import java.io.BufferedInputStream;  
  2. import java.io.FileInputStream;  
  3. import java.io.FileWriter;  
  4. import java.io.IOException;  
  5. import java.io.PrintWriter;  
  6.   
  7. /** 
  8.  * 图片转成十六进制 
  9.  */  
  10. public class ImageToHex  
  11. {  
  12.     public static void main(String[] args) throws Exception  
  13.     {  
  14.         try  
  15.         {  
  16.             StringBuffer sb = new StringBuffer();  
  17.             FileInputStream fis = new FileInputStream("V:/aaa.jpg");  
  18.             BufferedInputStream bis = new BufferedInputStream(fis);  
  19.             java.io.ByteArrayOutputStream bos = new java.io.ByteArrayOutputStream();  
  20.             byte[] buff = new byte[1024];  
  21.             int len = 0;  
  22.             while ((len = fis.read(buff)) != -1)  
  23.             {  
  24.                 bos.write(buff, 0, len);  
  25.             }  
  26.             // 得到图片的字节数组   
  27.             byte[] result = bos.toByteArray();  
  28.             System.out.println("++++" + byte2HexStr(result));  
  29.             // 字节数组转成十六进制   
  30.             String str = byte2HexStr(result);  
  31.             /* 
  32.              * 将十六进制串保存到txt文件中 
  33.              */  
  34.             PrintWriter pw = new PrintWriter(  
  35.                     new FileWriter("V:/aaa.txt"));  
  36.             pw.println(str);  
  37.             pw.close();  
  38.         }  
  39.         catch (IOException e)  
  40.         {  
  41.             e.printStackTrace();  
  42.         }  
  43.     }  
  44.   
  45.     /* 
  46.      * 实现字节数组向十六进制的转换方法一 
  47.      */  
  48.     public static String byte2HexStr(byte[] b)  
  49.     {  
  50.         String hs = "";  
  51.         String stmp = "";  
  52.         for (int n = 0; n < b.length; n++)  
  53.         {  
  54.             stmp = (Integer.toHexString(b[n] & 0XFF));  
  55.             if (stmp.length() == 1)  
  56.                 hs = hs + "0" + stmp;  
  57.             else  
  58.                 hs = hs + stmp;  
  59.         }  
  60.         return hs.toUpperCase();  
  61.     }  
  62.   
  63.     private static byte uniteBytes(String src0, String src1)  
  64.     {  
  65.         byte b0 = Byte.decode("0x" + src0).byteValue();  
  66.         b0 = (byte) (b0 << 4);  
  67.         byte b1 = Byte.decode("0x" + src1).byteValue();  
  68.         byte ret = (byte) (b0 | b1);  
  69.         return ret;  
  70.     }  
  71.   
  72.     /* 
  73.      * 实现字节数组向十六进制的转换的方法二 
  74.      */  
  75.     public static String bytesToHexString(byte[] src)  
  76.     {  
  77.         StringBuilder stringBuilder = new StringBuilder("");  
  78.         if (src == null || src.length <= 0)  
  79.         {  
  80.             return null;  
  81.         }  
  82.         for (int i = 0; i < src.length; i++)  
  83.         {  
  84.             int v = src[i] & 0xFF;  
  85.             String hv = Integer.toHexString(v);  
  86.             if (hv.length() < 2)  
  87.             {  
  88.                 stringBuilder.append(0);  
  89.             }  
  90.             stringBuilder.append(hv);  
  91.         }  
  92.         return stringBuilder.toString();  
  93.     }  
  94. }  

0 0
原创粉丝点击