Java中字符串转16进制的方法
在Java中,将字符串转换为16进制表示有几种常见方法,以下是几种实现方式:

方法1:使用字节转换
public static String stringToHex(String str) {
if (str == null || str.isEmpty()) {
return "";
}
StringBuilder hexString = new StringBuilder();
for (char c : str.toCharArray()) {
hexString.append(Integer.toHexString((int) c));
}
return hexString.toString();
}
方法2:使用字节数组(推荐)
public static String stringToHex(String str) {
if (str == null || str.isEmpty()) {
return "";
}
char[] chars = str.toCharArray();
StringBuilder hexString = new StringBuilder();
for (char c : chars) {
hexString.append(String.format("%02x", (int) c));
}
return hexString.toString();
}
方法3:使用Apache Commons Codec库
如果你可以使用第三方库,Apache Commons Codec提供了更简洁的方法:
import org.apache.commons.codec.binary.Hex;
public static String stringToHex(String str) {
if (str == null || str.isEmpty()) {
return "";
}
return Hex.encodeHexString(str.getBytes());
}
方法4:处理UTF-8编码
如果需要考虑UTF-8编码的多字节字符:
import java.nio.charset.StandardCharsets;
public static String stringToHex(String str) {
if (str == null || str.isEmpty()) {
return "";
}
byte[] bytes = str.getBytes(StandardCharsets.UTF_8);
StringBuilder hexString = new StringBuilder();
for (byte b : bytes) {
hexString.append(String.format("%02x", b));
}
return hexString.toString();
}
示例使用
public static void main(String[] args) {
String str = "Hello, 世界";
System.out.println(stringToHex(str)); // 输出16进制字符串
}
注意事项
- 不同方法会产生不同的16进制表示,取决于字符编码和转换方式
- 方法2和方法4更常用,方法4能正确处理多字节字符
- 如果需要反向转换(16进制转字符串),可以使用
Integer.parseInt(hex, 16)或Hex.decodeHex()方法
选择哪种方法取决于你的具体需求,是否需要处理多字节字符,以及是否可以使用第三方库。

