Java十六进制字节数组转换为整数而不先转换为String

时间:2018-09-25 07:54:37

标签: java arrays int hex byte

我正在尝试转换包含十六进制值的字节数组。

byte[] bytes = {48, 48, 48, 48, 48, 51, 51, 99}

例如:48、48、48、48、48、51、51、99是0000033c,转换为int是828。 转换的唯一方法是将其转换为 String ,然后从String中解析整数。

 public static int ConvertValueFromBytes(byte[] bytes)
    {
        String b = new String(bytes);
        return Converter.ConvertHexToInt(b);
    }

这里的主要问题是性能,多次调用它可能会导致性能问题。当尝试从字节数组解析int值时,我得到了大量数字,这就是为什么我从String进行解析以获取正确的值。 有更好的方法或解决方案吗?

1 个答案:

答案 0 :(得分:1)

虽然目前还不清楚为什么要用这种方式表示数据,但无需使用字符串即可轻松进行转换:

int v = 0;
for (byte b : bytes) {
  v = 16 * v + Character.getNumericValue(b);
}

Ideone demo