如何将十六进制字符串转换为十六进制字节?

时间:2013-10-08 12:46:44

标签: java

在我的应用程序中,我正在从表中读取一些数据。这是字符串格式。我需要将这些数据解析为byte。 例: 假设我的字符串包含0e 比我想把0e作为字节值。 这里(byte) (Integer.parseInt("0e",16) & 0xff);将无法工作,因为它会将此值解析为整数..任何有关此的帮助将不胜感激。谢谢。

4 个答案:

答案 0 :(得分:8)

即使Integer.parseInt("0e", 16) & 0xff产生integer,也没有什么可以阻止你添加演员:

byte b = (byte)(Integer.parseInt("0e",16) & 0xff);

您可以使用String.Format来验证转换是否正常运行:

String backToHex = String.format("%02x", b); // produces "0e"

答案 1 :(得分:3)

尝试:

byte b = Byte.parseByte("0e", 16);

答案 2 :(得分:2)

您可以通过以下代码解析字节:

byte b = Byte.parseByte("0e", 16)

答案 3 :(得分:1)

这会将您的字符串转换为字节列表。

public static List<Byte> parseStringBytes(String str)
{
    if (str.length() % 2 == 1)
        str = "0" + str; // otherwise 010 will parse as [1, 0] instead of [0, 1]                      

    // Split string by every second character
    String[] strBytes = str.split("(?<=\\G.{2})");
    List<Byte> bytes = new ArrayList<>(strBytes.length);
    for (String s : strBytes) {
        bytes.add(Byte.parseByte(s, 16));
    }

    return bytes;
}    

这样打电话:

System.out.println(parseStringBytes("05317B13"));
// >>> [5, 49, 123, 19]