【问题标题】:Convert the hexa string into hex string byte array in Java在Java中将十六进制字符串转换为十六进制字符串字节数组
【发布时间】:2018-08-17 06:55:15
【问题描述】:

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

我试过这段代码

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

【问题讨论】:

  • 你的问题没有意义。字节数组包含字节,而不是字符。字节是数字,从 -127 到 128。表示它们的另一种方法是使用从 0 到 F 的一对字符:这称为十六进制表示。就像数字 1000 可以使用 1K 表示为字符串一样。但是 1K 仍然意味着数字 1000。
  • @JBNizet我期待这是“FF0A”--> byte[] {FF, OA}
  • @Scary Wombat .. 这不是一个重复的问题,将返回“FF”的答案标记为 -1,但我希望它是“FF”--> byte [] { FF }

标签: java arrays string hex byte


【解决方案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的十六进制字符串表示

【讨论】:

  • 是否可以创建字符串“FF”的字节数组而不是表示为“-1”。
猜你喜欢
  • 2019-07-27
  • 2017-08-23
  • 2018-01-31
  • 2014-03-10
  • 1970-01-01
  • 2017-06-17
  • 2015-04-30
  • 2018-01-22
  • 2020-11-07
相关资源
最近更新 更多