java byte数组与16进制字符串、字符串转换

2018-04-17  本文已影响0人  IT和金融

java socket通信中,UDP采用DatagramSocket进行接收receive和发送send, TCP则采用ServerSocket进行收发,经常会碰到一些byte数组与字符串,16进制字符串的相互转换问题

1、bytes数组转换为16进制字符串

public static String bytesToHexString(byte[] src) {

StringBuilder stringBuilder = new StringBuilder("");

if (src == null || src.length <= 0) {

return null;

}

for (int i = 0; i < src.length; i++) {

int v = src[i] & 0xFF;

String hv = Integer.toHexString(v);

if (hv.length() < 2) {

stringBuilder.append(0);

}

stringBuilder.append(hv);

}

return stringBuilder.toString();

}

2、16进制字符串转化为Byte数组


public static byte[] hexStringToByte(String hex) {

  int len = (hex.length() / 2);

  byte[] result = new byte[len];

  char[] achar = hex.toCharArray();

  for (int i = 0; i < len; i++) {

    int pos = i * 2;

    result[i] = (byte) (toByte(achar[pos]) << 4 | toByte(achar[pos + 1]));

  }

  return result;

    }

3、字符串转换为16进制字符串


    public static String stringToHexString(String strPart) { 

        StringBuffer hexString = new StringBuffer(); 

        for (int i = 0; i < strPart.length(); i++) { 

            int ch = (int) strPart.charAt(i); 

            String strHex = Integer.toHexString(ch); 

            hexString.append(strHex); 

        } 

        return hexString.toString(); 

    }

4、16进制字符串转化为字符串


public static String hexStringToString(String hex){ 

    StringBuilder sb = new StringBuilder(); 

    for( int i=0; i < hex.length()-1; i+=2 ){ 

        String output = hex.substring(i, (i + 2)); 

        int decimal = Integer.parseInt(output, 16); 

        sb.append((char)decimal); 

    } 

    return sb.toString(); 

    }
上一篇下一篇

猜你喜欢

热点阅读