字符串转换

/**
  * 将字符串两位两位分开
  */
 public static String splitTwo(String aa)
 {
  aa = aa.replaceAll(".{2}(?!$)", "$0 ");
  aa = aa.replaceAll(" ", " 0x");
  aa = "0x".concat(aa);
  return aa;
 }
 
 
 /**
     * bytes转换成十六进制字符串
     * @param byte[] b byte数组
     * @return String 每个Byte值之间空格分隔
     */ 
    public static String byte2HexStr(byte[] b) 
    { 
        String stmp=""; 
        StringBuilder sb = new StringBuilder(""); 
        for (int n=0;n<b.length;n++) 
        { 
            stmp = Integer.toHexString(b[n] & 0xFF); 
            sb.append((stmp.length()==1)? "0"+stmp : stmp); 
            sb.append(" "); 
        } 
        return sb.toString().toUpperCase().trim(); 
    } 

 
 /**
     * bytes字符串转换为Byte值
     * @param String src Byte字符串,每个Byte之间没有分隔符
     * @return byte[]
     */ 
    public static byte[] hexStr2Bytes(String src) 
    { 
        int m=0,n=0; 
        int l=src.length()/2; 
        System.out.println(l); 
        byte[] ret = new byte[l]; 
        for (int i = 0; i < l; i++) 
        { 
            m=i*2+1; 
            n=m+1; 
            ret[i] = Byte.decode("0x" + src.substring(i*2, m) + src.substring(m,n)); 
        } 
        return ret; 
    }
   
 /**
     * unicode的String转换成String的字符串
     * @param String hex 16进制值字符串 (一个unicode为2byte)
     * @return String 全角字符串
     */ 
    public static String unicodeToString(String hex) 
    { 
        int t = hex.length() / 6; 
        StringBuilder str = new StringBuilder(); 
        for (int i = 0; i < t; i++) 
        { 
            String s = hex.substring(i * 6, (i + 1) * 6); 
            // 高位需要补上00再转 
            String s1 = s.substring(2, 4) + "00"; 
            // 低位直接转 
            String s2 = s.substring(4); 
            // 将16进制的string转为int 
            int n = Integer.valueOf(s1, 16) + Integer.valueOf(s2, 16); 
            // 将int转换为字符 
            char[] chars = Character.toChars(n); 
            str.append(new String(chars)); 
        } 
        return str.toString(); 
    }
   
 /**
     * String的字符串转换成unicode的String
     * @param String strText 全角字符串
     * @return String 每个unicode之间无分隔符
     * @throws Exception
     */ 
    public static String strToUnicode(String strText) 
        throws Exception 
    { 
        char c; 
        StringBuilder str = new StringBuilder(); 
        int intAsc; 
        String strHex; 
        for (int i = 0; i < strText.length(); i++) 
        { 
            c = strText.charAt(i); 
            intAsc = (int) c; 
            strHex = Integer.toHexString(intAsc); 
            if (intAsc > 128) 
                str.append("\\u" + strHex); 
            else // 低位在前面补00 
                str.append("\\u00" + strHex); 
        } 
        return str.toString(); 
    } 
   
    /** 
     * 十六进制转换字符串
     * @param String str Byte字符串(Byte之间无分隔符 如:[616C6B])
     * @return String 对应的字符串
     */   
    public static String hexStr2Str(String hexStr) 
    {   
        String str = "0123456789ABCDEF";   
        char[] hexs = hexStr.toCharArray();   
        byte[] bytes = new byte[hexStr.length() / 2];   
        int n;   
 
        for (int i = 0; i < bytes.length; i++) 
        {   
            n = str.indexOf(hexs[2 * i]) * 16;   
            n += str.indexOf(hexs[2 * i + 1]);   
            bytes[i] = (byte) (n & 0xff);   
        }   
        return new String(bytes);   
    } 

   
 /** 
     * 字符串转换成十六进制字符串
     * @param String str 待转换的ASCII字符串
     * @return String 每个Byte之间空格分隔,如: [61 6C 6B]
     */   
    public static String str2HexStr(String str) 
    {   
 
        char[] chars = "0123456789ABCDEF".toCharArray();   
        StringBuilder sb = new StringBuilder(""); 
        byte[] bs = str.getBytes();   
        int bit;   
         
        for (int i = 0; i < bs.length; i++) 
        {   
            bit = (bs[i] & 0x0f0) >> 4;   
            sb.append(chars[bit]);   
            bit = bs[i] & 0x0f;   
            sb.append(chars[bit]); 
            sb.append(' '); 
        }   
        return sb.toString().trim();   
    } 

 private static String hexString = "0123456789ABCDEF";
    public static String decode(String bytes)
 {
  ByteArrayOutputStream baos = new ByteArrayOutputStream(bytes.length() / 2);
  for (int i = 0; i < bytes.length(); i += 2)
   baos.write((hexString.indexOf(bytes.charAt(i)) << 4 | hexString.indexOf(bytes.charAt(i + 1))));
  return new String(baos.toByteArray());
 }
   
    /**
  * 将对应的字母转换ASCII值
  *
  * @param n
  * @return
  */
 private static String toHexUtil(int n)
 {
  String rt = "";
  switch (n)
  {
  case 10:
   rt += "A";
   break;
  case 11:
   rt += "B";
   break;
  case 12:
   rt += "C";
   break;
  case 13:
   rt += "D";
   break;
  case 14:
   rt += "E";
   break;
  case 15:
   rt += "F";
   break;
  default:
   rt += n;
  }
  return rt;
 }
 
 /**
  * 将字母转换为对应16进制格式
  *
  * @param n
  * @return
  */
 public static String toHex(int n)
 {
  StringBuilder sb = new StringBuilder();
  if (n / 16 == 0)
  {
   return toHexUtil(n);
  }
  else
  {
   String t = toHex(n / 16);
   int nn = n % 16;
   sb.append(t).append(toHexUtil(nn));
  }
  return sb.toString();
 }
 /** 将字符串解析为ASCII
  *
  * @param str
  * @return
  */
 public static String parseAscii(String str)
 {
  StringBuilder sb = new StringBuilder();
  byte[] bs = str.getBytes();
  for (int i = 0; i < bs.length; i++)
   sb.append(toHex(bs[i]));

  return sb.toString();
 }

猜你喜欢

转载自wangliya110.iteye.com/blog/2381067