详细说明参见代码注释和输出。
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
public class Test {
public static void main(String[] args) throws UnsupportedEncodingException {
// byte数组打印示例
byte[] bs = {72, 101, 108, 108, 111, -17, -68, -116, -28, -67, -96, -27, -91, -67, -27, -107, -118};
// java byte数组打印(十进制输出)
System.out.println("byte数组打印(十进制输出):\t" + bytes2hexDisplayDec(bs));
// java byte数组打印(十六进制输出)
System.out.println("byte数组打印(十六进制输出):\t" + bytes2hexDisplayHex(bs));
// string byte[] 互相转换示例
// 1、string 转 byte[]
String str = "Hello,你好啊";
byte[] strbyte = str.getBytes("UTF-8"); // 设定编码方式相互转换
System.out.println("byte数组打印(十进制输出):\t" + bytes2hexDisplayDec(strbyte));
// 2、byte[] 转 string
byte[] byt = {72, 101, 108, 108, 111, -17, -68, -116, -28, -67, -96, -27, -91, -67, -27, -107, -118};
String bytestr; // 设定编码方式相互转换
bytestr = new String(byt, "UTF-8");
System.out.println("byte[] 转 string输出:\t" + bytestr);
}
// byte 转 string (十进制)
public static String bytes2hexDisplayDec(byte[] bytes) {
return Arrays.toString(bytes);
}
// byte 转 string (十六进制)
public static String bytes2hexDisplayHex(byte[] bytes) {
StringBuilder sb = new StringBuilder();
String tmp;
sb.append("[");
for (byte b : bytes) {
// 将每个字节与0xFF进行与运算,然后转化为10进制,然后借助于Integer再转化为16进制
tmp = Integer.toHexString(0xFF & b);
if (tmp.length() == 1) {
tmp = "0" + tmp;//只有一位的前面补个0
}
sb.append(tmp).append(" ");//每个字节用空格断开
}
sb.delete(sb.length() - 1, sb.length());//删除最后一个字节后面对于的空格
sb.append("]");
return sb.toString();
}
}
运行结果:
![](https://img-blog.csdnimg.cn/img_convert/e8b073711e384d849807e0346aba8134.png)