gpt4 book ai didi

java - 比较 byte[] 的各个部分以确定两个 byte[] 是否相同

转载 作者:行者123 更新时间:2023-12-01 14:38:58 24 4
gpt4 key购买 nike

我有一个光标适配器,其中网格设置中可能有许多图像。

bindView 方法运行时,它需要非常快地完成,因此作为性能/效率提升的一部分,我想在进行任何更改之前比较图像(所以我不开始多次运行我的异步任务等)。但是,我无法存储整个 byte[] (例如在 ViewHolder 中),因为这显然会占用内存。

但是,我想我可以获取图像字节数组的一部分(20 个字符左右),并将其与 ViewHolder 中当前的内容进行比较,如果不同,则可以验证。

这是一个可行的选择还是有更好的方法?其次,byte[] 的哪一部分将产生最独特的字符集?

最佳答案

1- 使用 java.security.DigestInputStream 获取 MD5 校验和(请参阅 Getting a File's MD5 Checksum in Java )

MessageDigest md = MessageDigest.getInstance("MD5");
InputStream is = new FileInputStream("file.txt");
try {
is = new DigestInputStream(is, md);
// read stream to EOF as normal...
}
finally {
is.close();
}
byte[] digest = md.digest();

2-比较两个byte[]的小方法

boolean safeArrayEquals(byte[] a1, byte[] a2) {
if (a1 == null || a2 == null) {
return (a1 == a2);
}

if (a1.length != a2.length) {
return false;
}

byte result = 0;
for (int i = 0; i < a1.length; i++) {
result |= a1[i] ^ a2[i];
}

return (result == 0);
}

关于java - 比较 byte[] 的各个部分以确定两个 byte[] 是否相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16190517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com