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

时间:2018-08-17 06:55:16

标签: java arrays string hex byte

我很难尝试将包含十六进制字符串表示形式的String转换为其相应的十六进制字符串字节数组。

我尝试了此代码

public static byte[] hexStringToByteArray(String s) {
    int len = s.length();
    byte[] data = new byte[len / 2];
    for (int i = 0; i < len; i += 2) {
        data[i / 2] = (byte) (((Character.digit(s.charAt(i), 16) << 4) + Character.digit(s
                .charAt(i + 1), 16)) & 0xFF);
    }
    return data;
}

这不是我在上面代码中寻找的“ FF”-> -1的确切值。

期望是“ FF”-> byte [] {FF}。

Ex:“ 01FF0A2357F01A” 结果应类似于此 byte [] {01 FF 0A 12 57 F0 1A}。

1 个答案:

答案 0 :(得分:1)

我认为您的期望不是很正确,但是

    String hex = "ff";
    Integer i = Integer.valueOf(hex, 16);
    System.out.println(i);
    Byte b = i.byteValue();
    System.out.println(b);
    System.out.println(Integer.toHexString(i));

FF-1的十六进制字符串表示形式