在此程序中,您将学习在Java中将字节数组转换为十六进制的不同方法。
public class ByteHex { public static void main(String[] args) { byte[] bytes = {10, 2, 15, 11}; for (byte b : bytes) { String st = String.format("%02X", b); System.out.print(st); } } }
运行该程序时,输出为:
0A020F0B
在上面的程序中,我们有一个名为bytes的字节数组。要将字节数组转换为十六进制值,我们遍历数组中的每个字节并使用String的format()。
我们使用%02X打印十六进制(X)值的两个位置(02),并将其存储在字符串st中。
对于大字节数组转换,这是相对较慢的过程。我们可以使用下面显示的字节操作大大提高执行速度。
public class ByteHex { private final static char[] hexArray = "0123456789ABCDEF".toCharArray(); public static String bytesToHex(byte[] bytes) { char[] hexChars = new char[bytes.length * 2]; for ( int j = 0; j < bytes.length; j++ ) { int v = bytes[j] & 0xFF; hexChars[j * 2] = hexArray[v >>> 4]; hexChars[j * 2 + 1] = hexArray[v & 0x0F]; } return new String(hexChars); } public static void main(String[] args) { byte[] bytes = {10, 2, 15, 11}; String s = bytesToHex(bytes); System.out.println(s); } }
该程序的输出与示例1相同。