Avatar ·

如何在Java中将字节数组转换为十六进制字符串?

大家好!我是Java新手,遇到了这样一个任务:我需要将字节数组(byte[])转换为表示这些字节的十六进制(hex)字符串。例如,如果我有字节数组 byte[] {0x0A, 0xFF, 0x1B},我想得到字符串 "0AFF1B"。 问题在于,当我尝试用 new String(bytes) 直接从字节数组创建字符串时,得到的是乱码,而不是十六进制表示。我明白这是错误的,因为 String 期望的是编码后的字符,而不是任意字节。 我写了一个简单的代码尝试手动实现: ```java public static String bytesToHex(byte[] bytes) { StringBuilder sb = new StringBuilder(); for (byte b : bytes) { sb.append(Integer.toHexString(b & 0xFF)); } return sb.toString(); } ``` 但它工作不正确:对于值在0到15之间的字节(例如0x0A),它只输出一个字符("A"),而不是两个("0A")。此外,如果字节是负数(例如