zoukankan      html  css  js  c++  java
  • Java中16进制与字符串之间的相互转换

     *字符串转化为Unicode编码:

    复制代码
    /**
     * 字符串转换unicode
     */
    public static String string2Unicode(String string) {
      StringBuffer unicode = new StringBuffer();
      for (int i = 0; i < string.length(); i++) {
        // 取出每一个字符
        char c = string.charAt(i);
        // 转换为unicode
        unicode.append("\u" + Integer.toHexString(c));
      }
      return unicode.toString();
    }  
    复制代码

    *字符串转为16进制

    复制代码
    /**
     * 字符串转化成为16进制字符串
     * @param s
     * @return
     */
    public static String strTo16(String s) {
        String str = "";
        for (int i = 0; i < s.length(); i++) {
            int ch = (int) s.charAt(i);
            String s4 = Integer.toHexString(ch);
            str = str + s4;
        }
        return str;
    }
    复制代码

    *16进制转为字符串

    复制代码
    /**
     * 16进制转换成为string类型字符串
     * @param s
     * @return
     */
    public static String hexStringToString(String s) {
        if (s == null || s.equals("")) {
            return null;
        }
        s = s.replace(" ", "");
        byte[] baKeyword = new byte[s.length() / 2];
        for (int i = 0; i < baKeyword.length; i++) {
            try {
                baKeyword[i] = (byte) (0xff & Integer.parseInt(s.substring(i * 2, i * 2 + 2), 16));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        try {
            s = new String(baKeyword, "UTF-8");
            new String();
        } catch (Exception e1) {
            e1.printStackTrace();
        }
        return s;
    }
    复制代码

    *Unicode转为字符串

    复制代码
    /**
     * unicode 转字符串
     */
    public static String unicode2String(String unicode) {
        StringBuffer string = new StringBuffer();
        String[] hex = unicode.split("\\u");
        for (int i = 1; i < hex.length; i++) {
            // 转换出每一个代码点
            int data = Integer.parseInt(hex[i], 16);
            // 追加成string
            string.append((char) data);
        }
        return string.toString();
    }
    复制代码

    此方法虽然解决了转化过程中中文乱码的问题,但是过于复杂,笔者后来又发现一种新的转化方式,可直接转化,中文不乱码,代码如下:

      *字符串转16进制

    复制代码
     1 /**
     2  * 字符串转换成为16进制(无需Unicode编码)
     3  * @param str
     4  * @return
     5  */
     6 public static String str2HexStr(String str) {
     7     char[] chars = "0123456789ABCDEF".toCharArray();
     8     StringBuilder sb = new StringBuilder("");
     9     byte[] bs = str.getBytes();
    10     int bit;
    11     for (int i = 0; i < bs.length; i++) {
    12         bit = (bs[i] & 0x0f0) >> 4;
    13         sb.append(chars[bit]);
    14         bit = bs[i] & 0x0f;
    15         sb.append(chars[bit]);
    16         // sb.append(' ');
    17     }
    18     return sb.toString().trim();
    19 }
    复制代码

    *16进制转为字符串

    复制代码
     1 /**
     2  * 16进制直接转换成为字符串(无需Unicode解码)
     3  * @param hexStr
     4  * @return
     5  */
     6 public static String hexStr2Str(String hexStr) {
     7     String str = "0123456789ABCDEF";
     8     char[] hexs = hexStr.toCharArray();
     9     byte[] bytes = new byte[hexStr.length() / 2];
    10     int n;
    11     for (int i = 0; i < bytes.length; i++) {
    12         n = str.indexOf(hexs[2 * i]) * 16;
    13         n += str.indexOf(hexs[2 * i + 1]);
    14         bytes[i] = (byte) (n & 0xff);
    15     }
    16     return new String(bytes);
    17 }
    复制代码
  • 相关阅读:
    多表模型
    母版,单表操作,双下划线模糊查询
    模板层
    视图层
    路由层
    orm
    浅谈cookie,sessionStorage和localStorage区别
    实现元素垂直居中的方法(补充)
    实现元素垂直居中的方法
    <a href="javascript:;"></a>
  • 原文地址:https://www.cnblogs.com/zxadndm/p/11550473.html
Copyright © 2011-2022 走看看