String與十六進位數互轉

來源:互聯網
上載者:User

廢話不多說,請看:

    /**       * 字串轉換成十六進位字串      * @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();        }            /**       * 十六進位轉換字串      * @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);        }            /**      * 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;      }        /**      * 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();      }            /**      * 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();      } 


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.