java 16進位與字串直接相互轉換

來源:互聯網
上載者:User

標籤:問題:   進位   from   uil   ref   不能   index   end   str 字串   

 java 16進位與字串直接相互轉換CreationTime--2018年7月12日09點39分Author:Marydon1.16進位轉換成字串
/** * 16進位直接轉換成為字串 * @explain  * @param hexStr 16進位字串 * @return String */public static String fromHexString(String hexString) {    // 用於接收轉換結果    String result = "";    // 轉大寫    hexString = hexString.toUpperCase();    // 16進位字元    String hexDigital = "0123456789ABCDEF";    // 將16進位字串轉換成char數組    char[] hexs = hexString.toCharArray();    // 能被16整除,肯定可以被2整除    byte[] bytes = new byte[hexString.length() / 2];    int n;        for (int i = 0; i < bytes.length; i++) {        n = hexDigital.indexOf(hexs[2 * i]) * 16 + hexDigital.indexOf(hexs[2 * i + 1]);        bytes[i] = (byte) (n & 0xff);    }    // byte[]-->String    result = new String(bytes);    return result;}
2.字串轉換成大寫的16進位字串
/** * 字串轉換成為16進位字串(大寫) * @explain 因為java逸出字元串在java中有著特殊的意義, *     所以當字串中包含逸出字元串,並將其轉換成16進位後,16進位再轉成String時,會出問題: *  java會將其當做逸出字元串所代表的含義解析出來 * @param str 字串(去除java逸出字元) * @return 16進位字串 * @throws Exception */public static String toHexString(String str) throws Exception {    // 用於接收轉換結果    String hexString = "";    // 1.校正是否包含特殊字元內容    // java特殊轉義符    // String[] escapeArray = {"\b","\t","\n","\f","\r","\‘","\"","\\"};    String[] escapeArray = {"\b","\t","\n","\f","\r"};    // 用於校正參數是否包含特殊轉義符    boolean flag = false;    // 迭代    for (String esacapeStr : escapeArray) {        // 一真則真        if (str.contains(esacapeStr)) {            flag = true;            break;// 終止迴圈        }    }    // 包含特殊字元    if (flag) throw new Exception("參數字串不能包含逸出字元!");        // 16進位字元    char[] hexArray = {‘0‘,‘1‘,‘2‘,‘3‘,‘4‘,‘5‘,‘6‘,‘7‘,‘8‘,‘9‘,‘A‘,‘B‘,‘C‘,‘D‘,‘E‘,‘F‘};    StringBuilder sb = new StringBuilder();    // String-->byte[]    byte[] bs = str.getBytes();    int bit;    for (int i = 0; i < bs.length; i++) {        bit = (bs[i] & 0x0f0) >> 4;        sb.append(hexArray[bit]);        bit = bs[i] & 0x0f;        sb.append(hexArray[bit]);    }    hexString = sb.toString();    return hexString;}
3.測試
/** * * @explain * @param args * @throws Exception  */public static void main(String[] args) throws Exception {    // 其中,\‘\"\\ 實際字串代表:‘"\    String str = "張三&$李四((、,//\‘\"\\‘’“”+-*/!!~.。=——??;;";    String hexStr = toHexString(str);    System.out.println(hexStr);    System.out.println(fromHexString(hexStr));}

 

 相關推薦:
  • java byte數組與16進位間的相互轉換
  • java byte數組與String互轉

 

 

java 16進位與字串直接相互轉換

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.