Vergleichen Sie zwei Byte Arrays? (Java)
Ich habe ein byte-array mit ~bezeichnet binäre Sequenz. Ich brauche, um zu bestätigen, dass die binäre Sequenz ist, was es sein soll. Ich habe versucht .equals
neben ==
, aber weder gearbeitet.
byte[] array = new BigInteger("1111000011110001", 2).toByteArray();
if (new BigInteger("1111000011110001", 2).toByteArray() == array){
System.out.println("the same");
} else {
System.out.println("different'");
}
Kommentar zu dem Problem
können Sie vergleichen Sie einfach die Saiten direkt?
@Objekte - führende Nullen. Neben der String / BigInteger Zeug konnte nur eine Möglichkeit der Darstellung der byte-array-Vergleich Frage.
Haben Sie versucht, mit der compareTo Methode? BTW
==
vergleicht primitive Werte nur zur info Hier ist die damit verbundene Frage, partial array vergleichen: stackoverflow.com/questions/16646967/...
InformationsquelleAutor der Frage Roger | 2011-03-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ihrem Beispiel haben Sie:
Beim Umgang mit Objekten,
==
in java vergleicht Referenzwerte. Sie überprüfen, um zu sehen, ob die Referenz auf das array zurückgegebentoByteArray()
ist die gleiche wie die Referenz gehaltenarray
, das kann niemals wahr sein. Darüber hinaus array-Klassen nicht überschreiben.equals()
also das Verhalten ist, dass derObject.equals()
denen auch nur vergleicht die Referenz-Werte.Vergleichen Inhalt von zwei arrays statische array-Vergleich Methoden zu Verfügung, die von der Arrays-Klasse
InformationsquelleAutor der Antwort Brian Roach
Check-out die statische
java.util.Arrays.equals()
Familie von Methoden. Es gibt eine, die genau das tut, was Sie wollen.InformationsquelleAutor der Antwort Ernest Friedman-Hill
Java keine Operatoren überladen, so werden Sie in der Regel müssen Sie eine Methode für die nicht-basic-Typen. Versuchen Sie, die Arrays.equals() Methode.
InformationsquelleAutor der Antwort jswolf19
Können Sie sowohl
Arrays.equals()
undMessageDigest.isEqual()
. Diese beiden Methoden haben einige Unterschiede obwohl.MessageDigest.isEqual()
ist eine Zeit-Konstante-Vergleich-Methode undArrays.equals()
ist nicht Zeit-Konstante und kann einige Sicherheits-Probleme, wenn Sie es in ein Sicherheits-Anwendung.Die details, die den Unterschied gelesen werden kann Arrays.equals () - vs MessageDigest.isEqual()
InformationsquelleAutor der Antwort PixelsTech
Natürlich ist die akzeptierte Antwort von Arrays.gleich( byte [], byte[] second ) ist korrekt.
Ich mag arbeiten auf einem niedrigeren Niveau, aber ich war nicht in der Lage zu finden, eine low-level-effiziente Funktion zu erfüllen Gleichheit testen reicht. Ich hatte schnell meine eigene, wenn jemand ihn braucht:
InformationsquelleAutor der Antwort Bamaco