Tengo una matriz de bytes con una ~ secuencia binaria conocida en ella. Necesito confirmar que la secuencia binaria es lo que se supone que es. Lo he intentado .equals
además ==
, pero ninguno funcionó.
byte[] array = new BigInteger("1111000011110001", 2).toByteArray();
if (new BigInteger("1111000011110001", 2).toByteArray() == array){
System.out.println("the same");
} else {
System.out.println("different'");
}
==
compara valores primitivos solo para tu informaciónRespuestas:
En su ejemplo, tiene:
Cuando se trata de objetos,
==
en Java se comparan valores de referencia . Está comprobando si la referencia a la matriz devuelta portoByteArray()
es la misma que la referencia contenidaarray
, lo que, por supuesto, nunca puede ser cierto. Además, las clases de matriz no se anulan,.equals()
por lo que el comportamiento es elObject.equals()
que también solo compara los valores de referencia.Para comparar el contenido de dos matrices, la clase Arrays proporciona métodos de comparación de matrices estáticas
fuente
Consulte la
java.util.Arrays.equals()
familia de métodos estática . Hay uno que hace exactamente lo que quieres.fuente
Java no sobrecarga a los operadores, por lo que normalmente necesitará un método para tipos no básicos. Prueba el método Arrays.equals () .
fuente
Puede usar ambos
Arrays.equals()
yMessageDigest.isEqual()
. Sin embargo, estos dos métodos tienen algunas diferencias.MessageDigest.isEqual()
es un método de comparación constante en el tiempo yArrays.equals()
no es constante en el tiempo y puede traer algunos problemas de seguridad si lo usa en una aplicación de seguridad.Los detalles de la diferencia se pueden leer en Arrays.equals () vs MessageDigest.isEqual ()
fuente
Por supuesto, la respuesta aceptada de Arrays.equal (byte [] primero, byte [] segundo) es correcta. Me gusta trabajar en un nivel inferior, pero no pude encontrar una función eficiente de bajo nivel para realizar rangos de prueba de igualdad. Tuve que preparar el mío, si alguien lo necesita:
fuente
Como quería comparar dos matrices para una prueba unitaria y llegué a esta respuesta, pensé que podía compartir.
También puedes hacerlo con:
Y puede consultar Comparación de matrices en aserciones JUnit para obtener más información.
fuente