【发布时间】:2014-07-20 09:36:24
【问题描述】:
在我目前工作的项目范围内,我使用存储在 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 掩码???
有什么想法吗?
【问题讨论】:
-
你不需要复制它。只需编写一个手动函数来迭代字节并比较它们。复制过程是什么让你慢下来。
private static compareFirstNBytes(byte[] a, byte[] b, int n) {//} -
我很好奇 - 您的尝试速度有多快,需要多快?因为我猜你的尝试已经相当快了(虽然一个简单的循环会更快)
-
这不会有太大的不同...
标签: java arrays compare byte mask