图片转16进制 java_java实现十六进制数与图片的互相转换

本文展示了如何使用Java进行十六进制与图片之间的转换。提供了两个类,一个是`Hex2Image`用于将十六进制字符串转换为图片,另一个是`ImageToHex`用于将图片转换为十六进制字符串并保存到文件。转换过程涉及到字节流操作和字节到十六进制的转换方法。
摘要由CSDN通过智能技术生成

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

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

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 <

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 

int v = src[i] & 0xFF;

String hv = Integer.toHexString(v);

if (hv.length() 

stringBuilder.append(0);

}

stringBuilder.append(hv);

}

return stringBuilder.toString();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值