1

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

4

4 回答 4

8

Even though Integer.parseInt("0e", 16) & 0xff produces an integer, there's nothing preventing you from adding a cast:

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

You can use String.Format to verify that the conversion has worked properly:

String backToHex = String.format("%02x", b); // produces "0e"
于 2013-10-08T12:49:21.393 回答
3

尝试:

byte b = Byte.parseByte("0e", 16);
于 2013-10-08T12:51:18.950 回答
2

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

byte b = Byte.parseByte("0e", 16)
于 2013-10-08T12:51:02.620 回答
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]
于 2013-10-08T13:03:14.157 回答