Java 字符串,byte[],16进制的字符串互转
生活随笔
收集整理的這篇文章主要介紹了
Java 字符串,byte[],16进制的字符串互转
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Java 字符串,byte[],16進制的字符串互轉 /** * 字符串轉換成十六進制字符串*/ 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]); } return sb.toString(); } /** * 十六進制轉換字符串 */ 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轉換成十六進制字符串*/public static String byte2HexStr(byte[] b) {String hs="";String stmp="";for (int n=0;n<b.length;n++) {stmp=(Integer.toHexString(b[n] & 0XFF));if (stmp.length()==1) hs=hs+"0"+stmp;else hs=hs+stmp;//if (n<b.length-1) hs=hs+":";}return hs.toUpperCase();}private static byte uniteBytes(String src0, String src1) {byte b0 = Byte.decode("0x" + src0).byteValue();b0 = (byte) (b0 << 4);byte b1 = Byte.decode("0x" + src1).byteValue();byte ret = (byte) (b0 | b1);return ret;}/*** bytes轉換成十六進制字符串*/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] = uniteBytes(src.substring(i*2, m),src.substring(m,n));}return ret;}/***String的字符串轉換成unicode的String*/public static String stringToUnicode(String strText) throws Exception {char c;String strRet = "";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) {strRet += "\\u" + strHex;} else {// 低位在前面補00strRet += "\\u00" + strHex;}}return strRet;}/***unicode的String轉換成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轉為intint n = Integer.valueOf(s1, 16) + Integer.valueOf(s2, 16);// 將int轉換為字符char[] chars = Character.toChars(n);str.append(new String(chars));}return str.toString();}
?
總結
以上是生活随笔為你收集整理的Java 字符串,byte[],16进制的字符串互转的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java自带的线程池ThreadPool
- 下一篇: Socket网络通讯开发总结之:Java