Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich habe ein Problem. Ich hashe mit dem SHA (160 bit) Dateien. Allerdings möchte ich die Ergebnisse direkt in ein Array eintragen und würde nun gerne den Hashwert wieder hashen. Sprich ich möchten den SHA-Hashwert durch die Anzahl der Arrayelemente "modulo'n". (modulo = Rest der Division) und dadurch den Eintrag im Array errechnen.
Das Problem ist aber, dass ich beim SHA ein 20 elementiges Bytearray bekomme. Wie kann das in eine Zahl umformen ? bzw, es würde mir auch reichen so viele Bits "von hinten" zu nehmen, wie in einen Long passen und damit die Modulooperation durchzuführen.
Kann mir da jemand helfen ?
Ich hoffe, ich konnte mein Problem präzise genug schildern. Ansonsten bitte einfach nachfragen.
du könntest dir aus dem byte[] einen BigInteger erstellen.
wieso willst du überhaupt das array als zahl und dann modulo? mir fällt da kein sinnvoller anwendungsfall ein...
du könntest dir aus dem byte[] einen BigInteger erstellen.
wieso willst du überhaupt das array als zahl und dann modulo? mir fällt da kein sinnvoller anwendungsfall ein...
naja hab ich doch versucht zu erklären. Ich habe den SHA-Wert als byte array. Ich bekomme aber mehrere von denen und möchte deshalb diese in einen Tabelle eintragen (ein Array). Sollten zwei Dateien den gleichen Hashwert besitzen, sollten sie auf das selbe Arrayfeld abgebildet werden. Die Nummer des Arrayfeldes will ich mit dem Modulo erreichen. Das ist zwar nicht zwingend eineindeutig, aber genau genug.
Aber wie wandeln ich denn nun ein Bytearray in eine Zahl um ? Meine ganzen Versuche scheiterten irgendwie immer.
mir entschließt sich noch immer der Sinn dieser Aktion ... schieb das Ding doch einfach als Schlüssel (am besten in String wandeln) in eine Map - gut ist ... wenn Du unbedingt eine Zahl brauchst, dann mach daraus eine BigInteger und nimm die als Schlüssel (wurde Dir übrigens schon angeboten)