1.十六进制转图片jpg

1.十六进制转图片jpg

  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. }  
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;

/**
 * 十六进制转成图片
 */
public class Hex2Image
{
	public static void main(String[] args) throws Exception
	{
		Hex2Image to = new Hex2Image();
		InputStream is = new FileInputStream("V:/aaa.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(), "V:/bbb.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进制
  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. }  
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * 图片转成十六进制
 */
public class ImageToHex
{
	public static void main(String[] args) throws Exception
	{
		try
		{
			StringBuffer sb = new StringBuffer();
			FileInputStream fis = new FileInputStream("V:/aaa.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("V:/aaa.txt"));
			pw.println(str);
			pw.close();
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
	}

	/*
	 * 实现字节数组向十六进制的转换方法一
	 */
	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();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值