下面直接贴代码

  1.  将GB2312转化为中文,如BAFAC2DCB2B7→胡萝卜,两个字节合成一个文字

Java代码
  1. public static String stringToGbk(String string) throws Exception {  
  2.     byte[] bytes = new byte[string.length() / 2];  
  3.     for (int j = 0; j < bytes.length; j++) {  
  4.         byte high = Byte.parseByte(string.substring(j * 2, j * 2 + 1), 16);  
  5.         byte low = Byte.parseByte(string.substring(j * 2 + 1, j * 2 + 2),  
  6.                 16);  
  7.         bytes[j] = (byte) (high << 4 | low);  
  8.     }  
  9.     String result = new String(bytes, "GBK");  
  10.     return result;  
  11. }  

  2.将中文转化为GB2312,并且结果以byte[]形式返回,如胡萝卜→new byte[]{BA  FA C2 DC B2 B7},一个字被分为两个字节

Java代码
  1. public static byte[] gbkToString(String str) throws Exception {  
  2.     return new String(str.getBytes("GBK"), "gb2312").getBytes("gb2312");  
  3. }  

  3.将十六进制的byte[]原封不动的转化为string,如byte[]{0x7e,0x80,0x11,0x20}→7e801120,可用于log打印

Java代码
  1. public static String bytesToHexString(byte[] src) {  
  2.     StringBuilder stringBuilder = new StringBuilder("");  
  3.     if (src == null || src.length <= 0) {  
  4.         return null;  
  5.     }  
  6.     for (int i = 0; i < src.length; i++) {  
  7.         int v = src[i] & 0xFF;  
  8.         String hv = Integer.toHexString(v);  
  9.         if (hv.length() < 2) {  
  10.             stringBuilder.append(0);  
  11.         }  
  12.         stringBuilder.append(hv);  
  13.     }  
  14.     return stringBuilder.toString();  
  15. }  

  4.将十六进制的byte[]原封不动的转化为string,并且每个byte之间用空格分开,如byte[]{0x7e,0x80,0x11,0x20}→7e 80 11 20,,可用于log打印

Java代码
  1. public static StringBuilder byte2HexStr(byte[] data) {  
  2.   
  3.     if (data != null && data.length > 0) {  
  4.         StringBuilder stringBuilder = new StringBuilder(data.length);  
  5.         for (byte byteChar : data) {  
  6.             stringBuilder.append(String.format("%02X ", byteChar));  
  7.         }  
  8.         return stringBuilder;  
  9.     }  
  10.     return null;  
  11. }  

  5.将byte[]数组转化为8、10、16等各种进制,例如byte[0x11,0x20]→4384,约等于1120(16进制)→4384,radix代表进制

Java代码
  1. public static String bytesToAllHex(byte[] bytes, int radix) {  
  2.     return new BigInteger(1, bytes).toString(radix);// 这里的1代表正数  
  3. }  

  6.将String的十六进制原封不动转化为byte的十六进制,例如7e20→new byte[]{0x7e,x20}

Java代码
  1. public static byte[] HexString2Bytes(String src) {  
  2.     byte[] ret = new byte[src.length() / 2];  
  3.     byte[] tmp = src.getBytes();  
  4.     for (int i = 0; i < tmp.length / 2; i++) {  
  5.         ret[i] = uniteBytes(tmp[i * 2], tmp[i * 2 + 1]);  
  6.     }  
  7.     return ret;  
  8. }  
Java代码
  1. public static byte uniteBytes(byte src0, byte src1) {  
  2.     byte _b0 = Byte.decode("0x" + new String(new byte[] { src0 }))  
  3.             .byteValue();  
  4.     _b0 = (byte) (_b0 << 4);  
  5.     byte _b1 = Byte.decode("0x" + new String(new byte[] { src1 }))  
  6.             .byteValue();  
  7.     byte ret = (byte) (_b0 ^ _b1);  
  8.     return ret;  
本文发布:Android开发网
本文地址:http://www.jizhuomi.com/android/example/606.html
2016年8月22日
发布:鸡啄米 分类:Android开发实例 浏览: 评论:0