如何比较两个字节数组?(Java)

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (283)

我有一个字节数组,其中包含一个已知的二进制序列。我需要确认二进制序列是什么。我曾尝试.equals和==,但都不工作。

byte[] array = new BigInteger("1111000011110001", 2).toByteArray();
if (new BigInteger("1111000011110001", 2).toByteArray() == array){
    System.out.println("the same");
} else {
    System.out.println("different'");
}
提问于
用户回答回答于

在你的例子中,你有:

if (new BigInteger("1111000011110001", 2).toByteArray() == array)

在处理对象时,==在java中比较参考值。你正在检查返回的数组的引用是否与保存的引用toByteArray()相同array,这当然是不可能的。另外,数组类不会覆盖,.equals()其行为Object.equals()也只是比较参考值。

为了比较两个数组的内容Arrays类提供了静态数组比较方法

byte[] array = new BigInteger("1111000011110001", 2).toByteArray();
byte[] secondArray = new BigInteger("1111000011110001", 2).toByteArray();
if (Arrays.equals(array, secondArray))
{
    System.out.println("Yup, they're the same!");
}
用户回答回答于

扫码关注云+社区

领取腾讯云代金券