Java Hex 16進位的 byte String 轉換類

來源:互聯網
上載者:User

因為工作上的需要,整理了一份 16進位的 byte String值轉換的類。

有需要的朋友可以直接拿去用。

package mobi.dzs.util;/** * 16進位值與String/Byte之間的轉換 * @author JerryLi * @email lijian@dzs.mobi * @data 2011-10-16 * */public class CHexConver{/**  * 字串轉換成十六進位字串 * @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.