java - 比较字节子数组的快速方法

标签 java arrays compare byte mask

在我目前工作的项目范围内,我使用存储在 10 字节数组中的二进制数据,并且我试图找到一种快速的方法来比较它们。我最感兴趣的是 5 个最重要的字节,所以我想在字节子数组之间进行比较。 例如,我有这两个参数:

byte [] indicator = new byte[5];
byte [] current = new byte[10];

我想查看“current”的前 5 个字节是否等于“indicator”。为此,我使用了 Arrays 函数,所以我实际上是在执行以下操作:

Arrays.equals(indicator, Arrays.copyOfRange(current, 0, 5))

这当然可以正常工作,但速度不如要求的快。所以我坚信一定有更好的方法来执行这种字节比较。也许通过使用 0xFF 掩码???

有什么想法吗?

最佳答案

你可以写你的辅助方法,它会比分配一个新副本更快:

public boolean equalsInRange (byte[] arr1, int from1, int to1, byte[] arr2, int from2, int to2) {
    if (to1 - from1 < 0 || to1 - from1 != to2 - from2)
        return false;
    int i1 = from1, i2 = from2;
    while (i1 <= to1) {
        if (arr1[i1] != arr2[i2])
            return false;
        ++i1;
        ++i2;
    }
    return true;
}

关于java - 比较字节子数组的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23957760/

相关文章:

c - 没有得到想要的输出。逻辑上是否有本质上的错误?

python - 当等于或大于 0 时,将三个连续数字相加 - Python

javascript - 根据返回新数组javascript的另一个数组过滤对象数组

c# - 在 C# 中比较字符串

c# - 通过 SDK 在 Adob​​e Acrobat 中比较 PDF 文档

java - 没有声明抛出异常的魔法异常抛出器

java - 如何在没有 JOptionPane 的情况下在 Java 中创建自定义错误弹出消息?

java - 如何在单个对象中映射多行?

Java Callable Pool 线程同时完成这一切

php - 如何为用户发布的内容创建版本控制/历史/修订系统?