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

标签 java arrays string hex byte

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

我尝试了这段代码

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 }。

例如:"01FF0A2357F01A"结果应该像这样byte[] { 01 FF 0A 12 57 F0 1A }。

最佳答案

我认为你的期望不太正确,但是,

    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 的十六进制字符串表示

关于java - Java中将十六进制字符串转换为十六进制字符串字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51889911/

相关文章:

javascript - 使用 Prototype JS 迭代 json 对象数组并根据键对其进行排序

javascript - 为什么 for 循环不起作用?

java - Hazelcast 管理中心 - 成员无法沟通

java - 错误: "Unable to obtain ZonedDateTime from TemporalAccessor" for format "yyyy-MM-dd hh:mm:ss z"

java - 无法在SQL中使用prepareStatement

c - 如何只检查一次输入,而不是挂起等待输入

c++ - 在 C++ 中动态增加数组大小的更好方法

java - 字符串中的互换字符

string - 将 char 转换为 &str

java - Oracle 和 db2 的 CLASSPATH 与 java.library.path 设置