Date和String转换 byte[]和string

java中String和Date的互相转换使用SimpleDateFormat来完成。SimpleDateFormat使用记得 import java.text.SimpleDateFormat。

  1. String -> Date

1
2
3
java.text.SimpleDateFormat formatter =  new  SimpleDateFormat(  "yyyy-MM-dd " );
String s=  "2011-07-09 "
Date date =  formatter.parse(s);

进而可以获得Calendar和currentTimeMillis

Calendar cal=Calendar.getInstance();
cal.setTime(date);
c.getTimeInMillis()

2.  Date->String

1
2
java.text.SimpleDateFormat formatter =  new  SimpleDateFormat(  "yyyy-MM-dd " );
String date = formatter.format( new  Date()); //格式化数据

当然SimpleDateFormat格式表示方法很多:

SimpleDateFormat函数语法:         G 年代标志符         y 年         M 月         d 日         h 时 在上午或下午 (1~12)         H 时 在一天中 (0~23)         m 分         s 秒         S 毫秒         E 星期         D 一年中的第几天         F 一月中第几个星期几         w 一年中第几个星期         W 一月中第几个星期         a 上午 / 下午 标记符         k 时 在一天中 (1~24)         K 时 在上午或下午 (0~11)         z 时区      常见标准的写法"yyyy-MM-dd HH:mm:ss",注意大小写,时间是24小时制24小时制转换成12小时制只需将HH改成hh,不需要另外的函数。

3./**
     * To byte array byte [ ].
     *
     * @param hexString the hex string
     * @return the byte [ ]
     */
    public static byte[] toByteArray(String hexString) {
        if (StringUtils.isEmpty(hexString))
            return null;
        hexString = hexString.toLowerCase();
        final byte[] byteArray = new byte[hexString.length() >> 1];
        int index = 0;
        for (int i = 0; i < hexString.length(); i++) {
            if (index  > hexString.length() - 1)
                return byteArray;
            byte highDit = (byte) (Character.digit(hexString.charAt(index), 16) & 0xFF);
            byte lowDit = (byte) (Character.digit(hexString.charAt(index + 1), 16) & 0xFF);
            byteArray[i] = (byte) (highDit << 4 | lowDit);
            index += 2;
        }
        return byteArray;
    }




    /**
     * byte[] to Hex string.
     *
     * @param byteArray the byte array
     * @return the string
     */


    public static String toHexString(byte[] byteArray) {
        final StringBuilder hexString = new StringBuilder("");
        if (byteArray == null || byteArray.length <= 0)
            return null;
        for (int i = 0; i < byteArray.length; i++) {
            int v = byteArray[i] & 0xFF;
            String hv = Integer.toHexString(v);
            if (hv.length() < 2) {
                hexString.append(0);
            }
            hexString.append(hv);
        }
        return hexString.toString().toLowerCase();

    }


3.

  1. package mobi.dzs.android.util;  
  2.   
  3. import java.util.Locale;  
  4.   
  5. /** 
  6.  * 16进制值与String/Byte之间的转换 
  7.  * @author JerryLi 
  8.  * @email [email protected] 
  9.  * @data 2011-10-16 
  10.  * */  
  11. public class CHexConver  
  12. {  
  13.     private final static char[] mChars = "0123456789ABCDEF".toCharArray();  
  14.     private final static String mHexStr = "0123456789ABCDEF";    
  15.     /**  
  16.      * 检查16进制字符串是否有效 
  17.      * @param sHex String 16进制字符串 
  18.      * @return boolean 
  19.      */    
  20.     public static boolean checkHexStr(String sHex){    
  21.         String sTmp = sHex.toString().trim().replace(" """).toUpperCase(Locale.US);  
  22.         int iLen = sTmp.length();  
  23.           
  24.         if (iLen > 1 && iLen%2 == 0){  
  25.             for(int i=0; i<iLen; i++)  
  26.                 if (!mHexStr.contains(sTmp.substring(i, i+1)))  
  27.                     return false;  
  28.             return true;  
  29.         }  
  30.         else  
  31.             return false;  
  32.     }  
  33.       
  34.     /**  
  35.      * 字符串转换成十六进制字符串 
  36.      * @param str String 待转换的ASCII字符串 
  37.      * @return String 每个Byte之间空格分隔,如: [61 6C 6B] 
  38.      */    
  39.     public static String str2HexStr(String str){    
  40.         StringBuilder sb = new StringBuilder();  
  41.         byte[] bs = str.getBytes();    
  42.           
  43.         for (int i = 0; i < bs.length; i++){    
  44.             sb.append(mChars[(bs[i] & 0xFF) >> 4]);    
  45.             sb.append(mChars[bs[i] & 0x0F]);  
  46.             sb.append(' ');  
  47.         }    
  48.         return sb.toString().trim();    
  49.     }  
  50.       
  51.     /**  
  52.      * 十六进制字符串转换成 ASCII字符串 
  53.      * @param str String Byte字符串 
  54.      * @return String 对应的字符串 
  55.      */    
  56.     public static String hexStr2Str(String hexStr){    
  57.         hexStr = hexStr.toString().trim().replace(" """).toUpperCase(Locale.US);  
  58.         char[] hexs = hexStr.toCharArray();    
  59.         byte[] bytes = new byte[hexStr.length() / 2];    
  60.         int iTmp = 0x00;;    
  61.   
  62.         for (int i = 0; i < bytes.length; i++){    
  63.             iTmp = mHexStr.indexOf(hexs[2 * i]) << 4;    
  64.             iTmp |= mHexStr.indexOf(hexs[2 * i + 1]);    
  65.             bytes[i] = (byte) (iTmp & 0xFF);    
  66.         }    
  67.         return new String(bytes);    
  68.     }  
  69.       
  70.     /** 
  71.      * bytes转换成十六进制字符串 
  72.      * @param b byte[] byte数组 
  73.      * @param iLen int 取前N位处理 N=iLen 
  74.      * @return String 每个Byte值之间空格分隔 
  75.      */  
  76.     public static String byte2HexStr(byte[] b, int iLen){  
  77.         StringBuilder sb = new StringBuilder();  
  78.         for (int n=0; n<iLen; n++){  
  79.             sb.append(mChars[(b[n] & 0xFF) >> 4]);  
  80.             sb.append(mChars[b[n] & 0x0F]);  
  81.             sb.append(' ');  
  82.         }  
  83.         return sb.toString().trim().toUpperCase(Locale.US);  
  84.     }  
  85.       
  86.     /** 
  87.      * bytes字符串转换为Byte值 
  88.      * @param src String Byte字符串,每个Byte之间没有分隔符(字符范围:0-9 A-F) 
  89.      * @return byte[] 
  90.      */  
  91.     public static byte[] hexStr2Bytes(String src){  
  92.         /*对输入值进行规范化整理*/  
  93.         src = src.trim().replace(" """).toUpperCase(Locale.US);  
  94.         //处理值初始化  
  95.         int m=0,n=0;  
  96.         int iLen=src.length()/2//计算长度  
  97.         byte[] ret = new byte[iLen]; //分配存储空间  
  98.           
  99.         for (int i = 0; i < iLen; i++){  
  100.             m=i*2+1;  
  101.             n=m+1;  
  102.             ret[i] = (byte)(Integer.decode("0x"+ src.substring(i*2, m) + src.substring(m,n)) & 0xFF);  
  103.         }  
  104.         return ret;  
  105.     }  
  106.   
  107.     /** 
  108.      * String的字符串转换成unicode的String 
  109.      * @param strText String 全角字符串 
  110.      * @return String 每个unicode之间无分隔符 
  111.      * @throws Exception 
  112.      */  
  113.     public static String strToUnicode(String strText)  
  114.         throws Exception  
  115.     {  
  116.         char c;  
  117.         StringBuilder str = new StringBuilder();  
  118.         int intAsc;  
  119.         String strHex;  
  120.         for (int i = 0; i < strText.length(); i++){  
  121.             c = strText.charAt(i);  
  122.             intAsc = (int) c;  
  123.             strHex = Integer.toHexString(intAsc);  
  124.             if (intAsc > 128)  
  125.                 str.append("\\u");  
  126.             else // 低位在前面补00  
  127.                 str.append("\\u00");  
  128.             str.append(strHex);  
  129.         }  
  130.         return str.toString();  
  131.     }  
  132.       
  133.     /** 
  134.      * unicode的String转换成String的字符串 
  135.      * @param hex String 16进制值字符串 (一个unicode为2byte) 
  136.      * @return String 全角字符串 
  137.      * @see CHexConver.unicodeToString("\\u0068\\u0065\\u006c\\u006c\\u006f") 
  138.      */  
  139.     public static String unicodeToString(String hex){  
  140.         int t = hex.length() / 6;  
  141.         int iTmp = 0;  
  142.         StringBuilder str = new StringBuilder();  
  143.         for (int i = 0; i < t; i++){  
  144.             String s = hex.substring(i * 6, (i + 1) * 6);  
  145.             // 将16进制的string转为int  
  146.             iTmp = (Integer.valueOf(s.substring(24), 16) << 8) | Integer.valueOf(s.substring(4), 16);  
  147.             // 将int转换为字符  
  148.             str.append(new String(Character.toChars(iTmp)));  
  149.         }  
  150.         return str.toString();  
  151.     }  
  152. }  

猜你喜欢

转载自blog.csdn.net/m0_37321987/article/details/80007490