杰瑞科技汇

string转16进制 java

Java中字符串转16进制的方法

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

string转16进制 java-图1
(图片来源网络,侵删)

方法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进制字符串
}

注意事项

  1. 不同方法会产生不同的16进制表示,取决于字符编码和转换方式
  2. 方法2和方法4更常用,方法4能正确处理多字节字符
  3. 如果需要反向转换(16进制转字符串),可以使用Integer.parseInt(hex, 16)Hex.decodeHex()方法

选择哪种方法取决于你的具体需求,是否需要处理多字节字符,以及是否可以使用第三方库。

string转16进制 java-图2
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇