基本类型转换,高性能测试类

package util;

import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
import java.nio.charset.CharsetDecoder;

import org.omg.IOP.Encoding;

import sun.misc.BASE64Encoder;


public class Test {
	private static byte[] getBillJobId=new byte[20];
	 public static String byteArr2HexStr(byte[] arrB) throws Exception {  
	      int iLen = arrB.length;  
	      // 每个byte用两个字符才能表示,所以字符串的长度是数组长度的两倍  
	      StringBuffer sb = new StringBuffer(iLen * 2);  
	      for (int i = 0; i < iLen; i++) {  
	           int intTmp = arrB[i];  
	           // 把负数转换为正数  
	           while (intTmp < 0) {  
	            intTmp = intTmp + 256;  
	           }  
	           // 小于0F的数需要在前面补0  
	           if (intTmp < 16) {  
	            sb.append("0");  
	           }  
	           sb.append(Integer.toString(intTmp, 16));  
	          }  
	          return sb.toString();  
	     }  
	public static String bytesToHex(byte[] src){   
        if (src == null || src.length <= 0) {   
            return null;   
        } 

        StringBuilder stringBuilder = new StringBuilder("");         
        for (int i = 0; i < src.length; i++) {   
            // 之所以用byte和0xff相与,是因为int是32位,与0xff相与后就舍弃前面的24位,只保留后8位
            String str = Integer.toHexString(src[i] & 0xff); 
            if (str.length() < 2) { // 不足两位要补0
                stringBuilder.append(0);   
            }   
            stringBuilder.append(str);   
        }   
        return stringBuilder.toString();   
    } 
	public static String padRight(String s, int len) {
		int count = len - s.length();
		if (count > 0) {
			StringBuffer str = new StringBuffer(len);
			str.append(s);
			for (int i = 0; i < count; i++) {
				str.append(' ');
			}
			return str.toString();
		} else {
			return s;
		}
	}
    public static ByteBuffer getByteBuffer(String str)  
    {  
        return ByteBuffer.wrap(str.getBytes());  
    } 
    public static String getString(ByteBuffer buffer)  
    {  
        Charset charset = null;  
        CharsetDecoder decoder = null;  
        CharBuffer charBuffer = null;  
        try  
        {  
            charset = Charset.forName("UTF-8");  
            decoder = charset.newDecoder();  
            // charBuffer = decoder.decode(buffer);//用这个的话,只能输出来一次结果,第二次显示为空  
            charBuffer = decoder.decode(buffer.asReadOnlyBuffer());  
            return charBuffer.toString();  
        }  
        catch (Exception ex)  
        {  
            ex.printStackTrace();  
            return "";  
        }  
    }  
	public static void main(String[] args) throws Exception {
		String dd="abcdefghij";
	
		char[] cs = new char[] { 'a', 'b', 'c', 'd', 'e', 'f', 'g' };
		char[] a={'a','b'};
		byte[] kl=TypeCase.charsToBytes(a);
		char[]aa=TypeCase.bytesToChars(kl);
		ByteBuffer ty=getByteBuffer(dd);
		System.out.println(getString(ty));
		 for(int i=0;i<aa.length;i++){
			 System.out.println(aa[i]);
		    }
/*		boolean bl=false;
		 byte kl=TypeCase.booleanToByte(bl);	
		System.out.println(TypeCase.byteToBoolean(kl));
		*/
		double qq=1232455.9;
		long hh=9223372036854775807L;
	    byte []kk=TypeCase.longToBytes(hh);
		//System.out.println(TypeCase.bytesToLong(kk));
		  long time0=System.currentTimeMillis();
			 for(int i=0;i<10000000;i++){
				 String str = padRight(dd, 20);
					for (int j = 0; j < 20; j++) {
						getBillJobId[j] = (byte) str.charAt(j);
					}
			    }
		    long time1=System.currentTimeMillis();
		    System.out.println(time1-time0);
		    
		    ByteBuffer buffer = ByteBuffer.allocate(10);
		 //   getBillJobId=buffer.put(TypeCase.stringToS(dd)).array();
		    System.out.println(buffer.array().length);
		    System.out.println(TypeCase.bytesToString(buffer.array()));
		   
		    long time2=System.currentTimeMillis();
			 for(int i=0;i<10000000;i++){
				 getBillJobId=TypeCase.stringTobytes(dd,20);
					}
			    long time3=System.currentTimeMillis();
			    System.out.println(time3-time2);
			    System.out.println(new String(getBillJobId));
			    System.out.println(new String(getBillJobId));
		    
		    
		    
		//System.out.println((char)bufferT.array()[0]);
		
		
	      /* String books[] = new String[2];  
	        books[0] = "Thinking in Java";  
	        books[1] = "Effective Java"; 
	        System.out.println(books.toString());
		long a=1234567891234569L;
    long time0=System.currentTimeMillis();
  for(int i=0;i<1000000;i++){
	  byte[] k=TypeCase.longToBytes(a);
	  System.out.println(k.length);
	 long f= TypeCase.bytesToLong(k);
	  System.out.println(f);
    }
    long time1=System.currentTimeMillis();
    System.out.println(time1-time0);*/
}
}

  

posted @ 2018-03-06 18:44  杯子茶壶  阅读(67)  评论(0)    收藏  举报