Bitshifting in Java.

Status
Nicht offen für weitere Antworten.
G

GastoGast

Gast
Hallo!!
Ich möchte folgende PHP-Funktion auf Java umschreiben:
Code:
        function checksum ($url, $length = null, $init = 0xE6359A60) {
            if (is_null($length)) {
                $length = sizeof($url);
            }
            $a = $b = 0x9E3779B9;
            $c = $init;
            $k = 0;
            $len = $length;
            while($len >= 12) {
                $a += ($url[$k + 0] + ($url[$k + 1] << 8) + ($url[$k + 2] << 16) + ($url[$k +3] << 24));
                $b += ($url[$k + 4] + ($url[$k + 5] << 8) + ($url[$k + 6] << 16) + ($url[$k +7] << 24));
                $c += ($url[$k + 8] + ($url[$k + 9] << 8) + ($url[$k + 10] << 16) + ($url[$k +11] << 24));
                $mix = $this->mix($a, $b, $c);
                $a = $mix[0]; $b = $mix[1]; $c = $mix[2];
                $k += 12;
                $len -= 12;
            }
            $c += $length;
            switch($len) {
                case 11: $c += ($url[$k + 10] << 24);
                case 10: $c += ($url[$k + 9] << 16);
                case 9 : $c += ($url[$k + 8] << 8);
                case 8 : $b += ($url[$k + 7] << 24);
                case 7 : $b += ($url[$k + 6] << 16);
                case 6 : $b += ($url[$k + 5] << 8);
                case 5 : $b += ($url[$k + 4]);
                case 4 : $a += ($url[$k + 3] << 24);
                case 3 : $a += ($url[$k + 2] << 16);
                case 2 : $a += ($url[$k + 1] << 8);
                case 1 : $a += ($url[$k + 0]);
            }
            $mix = $this->mix($a, $b, $c);
            return $mix[2];
        }
Kann mir jemand da helfen und vlt nen Beispiel machen? ( ist natürlich auch super nett wenn du denn java code postest ^^)
Danke!
 

MasterEvil

Bekanntes Mitglied
Na das is doch schon fast mit Copy&Paste getan ;)
Was man nicht kann ist Werte im Funktionskopf zu initialisieren, ansonsten ist so ziemlich alles gleich.

Code:
public class checksum {

	public char make(char[] url) { return make(url, url.length, 0xE6359A60); }
	public char make(char[] url, int length) { return make(url, length, 0xE6359A60); }
	public char make(char[] url, long init) { return make(url, url.length, init); }
	public char make(char[] url, int length, long init) {

        if (length==0) length = url.length;

        long a = 0x9E3779B9, b = 0x9E3779B9;
        long c = init;
        int k = 0;
        int len = length;
        char[] mix;
        while(len >= 12) {
            a += (url[k + 0] + (url[k + 1] << 8) + (url[k + 2] << 16) + (url[k +3] << 24));
            b += (url[k + 4] + (url[k + 5] << 8) + (url[k + 6] << 16) + (url[k +7] << 24));
            c += (url[k + 8] + (url[k + 9] << 8) + (url[k + 10] << 16) + (url[k +11] << 24));
            mix = mix(a, b, c);
            a = mix[0];
            b = mix[1];
            c = mix[2];
            k += 12;
            len -= 12;
        }
        c += length;
        switch(len) {
            case 11: c += (url[k + 10] << 24);
            case 10: c += (url[k + 9] << 16);
            case 9 : c += (url[k + 8] << 8);
            case 8 : b += (url[k + 7] << 24);
            case 7 : b += (url[k + 6] << 16);
            case 6 : b += (url[k + 5] << 8);
            case 5 : b += (url[k + 4]);
            case 4 : a += (url[k + 3] << 24);
            case 3 : a += (url[k + 2] << 16);
            case 2 : a += (url[k + 1] << 8);
            case 1 : a += (url[k + 0]);
        }
        mix = mix(a, b, c);
        return mix[2];
    }
	
	private char[] mix(long a, long b, long c) {
		// mix ?!?
		char[] mixed = new char[]{(char)c, (char)a, (char)b};

		return mixed;
	}
}
 
G

Gast

Gast
Wow Super ;)
Und diese "mix" Funktion?
Code:
function mix ($a, $b, $c) {
            $a -= $b; $a -= $c; $this->to_int_32($a); $a = (int)($a ^ ($this->zero_fill($c, 13)));
            $b -= $c; $b -= $a; $this->to_int_32($b); $b = (int)($b ^ ($a << 8));
            $c -= $a; $c -= $b; $this->to_int_32($c); $c = (int)($c ^ ($this->zero_fill($b, 13)));
            $a -= $b; $a -= $c; $this->to_int_32($a); $a = (int)($a ^ ($this->zero_fill($c, 12)));
            $b -= $c; $b -= $a; $this->to_int_32($b); $b = (int)($b ^ ($a << 16));
            $c -= $a; $c -= $b; $this->to_int_32($c); $c = (int)($c ^ ($this->zero_fill($b, 5)));
            $a -= $b; $a -= $c; $this->to_int_32($a); $a = (int)($a ^ ($this->zero_fill($c, 3)));
            $b -= $c; $b -= $a; $this->to_int_32($b); $b = (int)($b ^ ($a << 10));
            $c -= $a; $c -= $b; $this->to_int_32($c); $c = (int)($c ^ ($this->zero_fill($b, 15)));
            return array($a,$b,$c);
        }
 
G

Gast

Gast
Um Verwirrung vorzubeugen hier noch die beiden anderen Funktionen:
Code:
 function to_int_32 (&$x) {
            $z = hexdec(80000000);
            $y = (int) $x;
            if($y ==- $z && $x <- $z){
                $y = (int) ((-1) * $x);
                $y = (-1) * $y;
            }
            $x = $y;
        }
        
        function zero_fill ($a, $b) {
            $z = hexdec(80000000);
            if ($z & $a) {
                $a = ($a >> 1);
                $a &= (~$z);
                $a |= 0x40000000;
                $a = ($a >> ($b - 1));
            } else {
                $a = ($a >> $b);
            }
            return $a;
        }
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
kodela Von C++ nach Java Allgemeine Java-Themen 1
Fey Java auf USB Stick Allgemeine Java-Themen 5
theJavaMaschine Mitstreiter gesucht: Gemeinsam Java und Android Development lernen! Allgemeine Java-Themen 5
PARAS Karriereberatung benötigt: Wie kann ich ein Java Full Stack Entwickler werden? Allgemeine Java-Themen 7
P Java Access Bridge Allgemeine Java-Themen 5
W ICEpdf PDF-Dateien werden mit Java 21 nicht nicht mehr vollständig dargestellt Allgemeine Java-Themen 3
MiMa Grundsätzliche Frage zur Verwendung von Java Versionen?? Allgemeine Java-Themen 3
OnDemand Java Deployment Vaadin Allgemeine Java-Themen 3
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
N LlaMA, KI, java-llama.cpp Allgemeine Java-Themen 39
V Java-Codierungsherausforderung: Navigieren durch die Macken der Datumsmanipulation Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
M java: unexpected type Allgemeine Java-Themen 2
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
B Java Discord bot auf ein Root Server? Allgemeine Java-Themen 1
BetziTheRealOne Java PKIX path building failed as non Admin Allgemeine Java-Themen 15
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
KonradN Java 21 Release Allgemeine Java-Themen 5
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
K Java Anwendung machen Anleitung Allgemeine Java-Themen 5
G java.io.listFiles() Allgemeine Java-Themen 3
8u3631984 Frage zu Java Streams min / max Allgemeine Java-Themen 17
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
K Java-Projekt Allgemeine Java-Themen 11
K Java-Projekt Allgemeine Java-Themen 0
ruutaiokwu Welcher Browser unterstützt heutzutage noch Java Applets? Allgemeine Java-Themen 5
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3
rode45e Java Threads Allgemeine Java-Themen 4
G java.io.listFiles() Allgemeine Java-Themen 2
N Java Dynamic Proxy Allgemeine Java-Themen 3
N Leichte Java Gegner Ki Allgemeine Java-Themen 10
A Java modul Problem Allgemeine Java-Themen 4
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
V Funktionale Schnittstelle in Java Allgemeine Java-Themen 3
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
berserkerdq2 Wenn ich bei Intelij javafx mit maven importieren will, muss ich das in die pom.xml reintun, aber warum noch in module-info.java? Allgemeine Java-Themen 3
KonradN Java 20 am 21. März Allgemeine Java-Themen 1
O Java Website Stock Bot Allgemeine Java-Themen 3
J Front-/Backend in Java Allgemeine Java-Themen 14
doopexxx JAVA Google Webcrawler Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
G java.lang.NoClassDefFoundError: org/aspectj/lang/Signature Allgemeine Java-Themen 2
lalex1491 Java Aktienkurse nachfragen Allgemeine Java-Themen 4
J Class to link Java Allgemeine Java-Themen 4
V Wie funktioniert das Schlüsselwort "final" von Java? Allgemeine Java-Themen 19
mrStudent Inferenz JAVA Allgemeine Java-Themen 6
U URI Rechner (Java Script) Allgemeine Java-Themen 7
TheSkyRider Java Geburtsdatum Textfeld Allgemeine Java-Themen 7
mihe7 Java 19 JavaDocs: Browserintegration Allgemeine Java-Themen 1
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21
H Java Rechner Programmierung der Mathematik Allgemeine Java-Themen 33
Lennox Schinkel Java Kara Auf einen Java Host laufen lassen Allgemeine Java-Themen 17
C Fußnoten von DocX mit Java Allgemeine Java-Themen 2
C Fußnoten in DocX mit Java Allgemeine Java-Themen 1
MJannek Aussagenlogik in Java Programmieren Allgemeine Java-Themen 22
B Per Java Word Dokument schreiben? Allgemeine Java-Themen 8
krgewb Java-Bibliothek für ONVIF Allgemeine Java-Themen 1
KonradN Oracle übergibt (Java Teile der) GraalVM Community Edition an OpenJDK Community Allgemeine Java-Themen 2
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
B Java mit command line und jars benutzen? Allgemeine Java-Themen 18
MJannek Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
B HTTP Allgemeine Fragen über Suchmaschine nutzen mit Java Allgemeine Java-Themen 20
Mick P. F. Wie kriege ich die Fehlermeldung "java: symbol lookup error: ..." weg? Allgemeine Java-Themen 11
K Nachhilfe Java Allgemeine Java-Themen 11
KonradN Java 19 Allgemeine Java-Themen 11
F IDEA IntelliJ Java Songliste erstellen Allgemeine Java-Themen 6
TheSepp Java bestimmtes Array auf den Wert 0 setzen Allgemeine Java-Themen 32
B Java Reflection Probleme beim wehcselseitigen Referenzieren zweier Klassen/Objekte Allgemeine Java-Themen 14
Sachinbhatt Sind alle Methoden in Java implizit virtuell Allgemeine Java-Themen 2
E Java und integrierte Grafikkarten Allgemeine Java-Themen 18
Sachinbhatt Wie wird die Typumwandlung bei Mehrfachvererbung in Java implementiert? Allgemeine Java-Themen 3
Peterw73 Hilfe bei Java gesucht Allgemeine Java-Themen 3
A Java unter Win 10 Allgemeine Java-Themen 1
B Woher kommen die Bildschirmkoordinaten beim java Robot? Allgemeine Java-Themen 14
P9cman java.Lang Klassen fehlen in JRE System Library Allgemeine Java-Themen 1
T Java Robot Class - Bot Allgemeine Java-Themen 3
E Wie Java Heap Space vergrößern? Allgemeine Java-Themen 3
B Java Programm auf virutellem Desktop laufen lassen? Allgemeine Java-Themen 1
D VBA Code mit Java ausführen möglich? Allgemeine Java-Themen 10
berserkerdq2 Threads, wie genau läuft das in Java ab? (Ich kann Threads erstellen und nutzen, nur das Verständnis) Allgemeine Java-Themen 6
izoards Java Home Pfad unabhängig von der Version Allgemeine Java-Themen 7
N JAVA-Code mit Grafikfenster zeichnet in Windows, aber nicht Mac. Allgemeine Java-Themen 4
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
KonradN CVE-2022-21449: Fehler in Java bei Signaturprüfung Allgemeine Java-Themen 20
berserkerdq2 Java sql Allgemeine Java-Themen 15
JordenJost Unverständlicher Java code? Allgemeine Java-Themen 21
LimDul XSD To Java - Überschreiben von Assoziationen Allgemeine Java-Themen 1
Aartiyadav Comparisons and Swapa in Bubble-sort Java Allgemeine Java-Themen 6
KonradN Java 18 Allgemeine Java-Themen 8
N Statistische Auswertung von Logfiles (Einlesen, auswerten und grafische Aufbereitung von logfiles) mit Java Allgemeine Java-Themen 9
ME2002 Fragen aus einer Java Klausur Allgemeine Java-Themen 67
Z Mit Java 8+ Streams Zeilen nummern zu Zeilen hinzufügen Allgemeine Java-Themen 17
M Verständnisfrage java.util.TimerTask Allgemeine Java-Themen 2
V Hilfe mit Java Code Allgemeine Java-Themen 4
S Processing Java Code verstehen Allgemeine Java-Themen 4
O Newton Algorithmus Java Allgemeine Java-Themen 1

Ähnliche Java Themen

Neue Themen


Oben