java byte数组与String的互转

来源:互联网 发布:移动网络服务器 编辑:程序博客网 时间:2024/05/22 07:13

java中有些情况下是需要将byte数组转化为String类型来传输的,但是如果用String(byte[]).getByte可能就转不回来了。在网上找了一个方法,他的做法就是将byte数组转化为一个包含16进制的字符串。比如byte = [8,20]可以用字符串表示为"0814".直接看代码吧。

//字节数组与字符串的转化public class BStransform { public static String byteArr2HexStr(byte[] arrB) throws Exception {  int iLen = arrB.length;  // 每个byte用两个字符才能表示,所以字符串的长度是数组长度的两倍  StringBuffer sb = new StringBuffer(iLen * 2);  for (int i = 0; i < iLen; i++) {   int intTmp = arrB[i];   // 把负数转换为正数   while (intTmp < 0) {    intTmp = intTmp + 256;   }   // 小于0F的数需要在前面补0   if (intTmp < 16) {    sb.append("0");   }   sb.append(Integer.toString(intTmp, 16));  }  return sb.toString(); }  public static byte[] hexStr2ByteArr(String strIn) throws Exception {  byte[] arrB = strIn.getBytes();  int iLen = arrB.length;  // 两个字符表示一个字节,所以字节数组长度是字符串长度除以2  byte[] arrOut = new byte[iLen / 2];  for (int i = 0; i < iLen; i = i + 2) {   String strTmp = new String(arrB, i, 2);   arrOut[i / 2] = (byte) Integer.parseInt(strTmp, 16);  }  return arrOut;}}

这样转来转去也不失真,很方便

原创粉丝点击