byte数组转换成16进制字符串

package com.oem.test;

import java.io.FileInputStream;
import java.io.IOException;

public class TestIO {
	/**
	  * byte数组转换成16进制字符串
	  * @param src
	  * @return
	  */
	 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();     
	    }
	 /**
	  * 根据文件流读取图片文件真实类型
(针对.wav格式的文件头信息制定byte数组长度)	  * @param is
	  * @return
	  */
	 public static String getTypeByStream(FileInputStream is){
	     byte[] b = new byte[19];  
	        try {
	   is.read(b, 0, b.length);
	  } catch (IOException e) {
	   e.printStackTrace();
	  }
	        String type = bytesToHexString(b).toUpperCase();
	        if(type.contains("FFD8FF")){
	         return "jpg";
	        }else if(type.contains("89504E47")){
	         return "png";
	        }else if(type.contains("47494638")){
	         return "gif";
	        }else if(type.contains("49492A00")){
	         return "tif";
	        }else if(type.contains("57415645")){
	         return "wav";
	        }
	        return type;
	    }
	 
	 
	 public static void main(String[] args) throws Exception {
//	     String src = "D:/workspace//8129.jpg";
//	     String src = "D:/workspace//temp/1.gif";
	     String src = "c:/LOVE.wav";
	     FileInputStream is = new FileInputStream(src);  
//	        byte[] b = new byte[4];  
//	        is.read(b, 0, b.length);  
//	        System.out.println(bytesToHexString(b));
	       
	        String type = getTypeByStream(is);
	        System.out.println(type);
	 }
}


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值