【问题标题】:Convert Hex String to unsigned Byte Array in Java在 Java 中将十六进制字符串转换为无符号字节数组
【发布时间】:2011-12-08 14:48:40
【问题描述】:

我得到 14 个字节的十六进制字符串,例如a55a0b05000000000022366420ec。 我使用 javax.xml.bind.DatatypeConverter.parseHexBinary(String s) 来获取一个 14 字节的数组。 不幸的是,这些是无符号字节,例如最后一个 0xEC = 236。

但我想将它们与这样的字节进行比较: if(byteArray[13] == 0xec) 由于 235 大于有符号字节,因此 if 语句将失败。 知道如何在java中解决这个问题吗? 谢谢!

【问题讨论】:

  • 把它当作无符号字节,比较也是一样的。

标签: java hex


【解决方案1】:

试试if(byteArray[13] == (byte)0xec)

【讨论】:

    【解决方案2】:

    您可以将字节提升为整数:

    if((byteArray[13] & 0xff) == 0xec)
    

    【讨论】:

      【解决方案3】:

      由于 java 不支持(至少使用原语)任何无符号数据类型,您应该考虑使用 int 作为数据类型来解析字符串..

              String str = "a55a0b05000000000022366420ec";
              int[] arrayOfValues = new int[str.length() / 2];
              int counter = 0;
              for (int i = 0; i < str.length(); i += 2) {
                  String s = str.substring(i, i + 2);
                  arrayOfValues[counter] = Integer.parseInt(s, 16);
                  counter++;
              }
      

      使用arrayOfValues...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-11
        • 2013-03-22
        • 2021-10-31
        • 2019-02-12
        相关资源
        最近更新 更多