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.
Hi zusammen
Ich lese binär aus einem Daten File in ein Byte Array. Jetzt versuche ich diverse Stellen zu filtern, indem ich ein anderes Bytearray erzeuge und das Ganze Bitweise "UND" verknüpfe.
Beispiel:
Nun habe ich da zwei "Probleme".
Erstens beim initialisieren des filter Arrays mit den Hex Werten - und ich will hier Hex Werte eintragen und nicht irgend was anderes - mault Eclipse bei Wert 1 und 3 rum und sagt das er int nicht nach Byte convertieren will. Bei 0x00 hat er keine Probleme.
Wieso int ? :bahnhof: Das sind ganz klar Bytes ...
Angenommen "datenVonDatei " wäre nur 3 Bytes lang, könnte ich dann auch folgendes machen ?
Nein, das ist nicht Sinn der Sache. Ich brauche ein Byte Array das Bytes von 0x00 bis 0xFF speichert - unsigned. Und ich hatte immer angenommen das Byte-Arrays genau das machen. Andernfalls wäre es doch ein (short) int.
Wofür brauchst du das Ganze denn? Du kannst ein int Array nehmen und die ganzen Bytes da drin speichern. Oder halt ein byte Array. Dass byte in Java signed ist, spielt doch keine Rolle. Du kannst da trotzdem Werte grösser als 0x7F reinschreiben.
Wofür brauchst du das Ganze denn? Du kannst ein int Array nehmen und die ganzen Bytes da drin speichern. Oder halt ein byte Array. Dass byte in Java signed ist, spielt doch keine Rolle. Du kannst da trotzdem Werte grösser als 0x7F reinschreiben.
Ich lese raw-data aus einer Datei. D.h. es kommt auf den "echten Hexwert" an der da steht und nicht was er im dezimalen Zahlensystem bedeutet. Die Bit-Reihenfolge ist für mich ausschlaggebend, weswegen ich ja auch bit-Filter verwende.
...äh, für was sind die "schiebe nach links" Anweisunge ? Warscheinlich nur zum rechnen wegen lsb und msb... oder ?
Oder "vermurkst" Java sonst die Werte ? (wegen signed Zahlentyp)
Wie schon gesagt, es spielt keine Rolle ob die Bytes signed oder unsigned sind. Die Bit Reihenfolge bleibt gleich.
Lies deine Datei in ein byte Array ein, benutze die ints2bytes Methode, die ich vor ein paar Tagen gepostet habe, um deinen Filter zu erzeugen, wende den Filter auf die Bytes an und schreib das Array wieder in eine Datei. Das funktioniert einwandfrei.
Der << Operator verschiebt alle Bits nach links und füllt rechts mit Nullen auf.
z.B. 0xFF << 8 ist gleich 0xFF00.
Wieso eigentlich "automatische Umwandlung" ? Sowohl a als auch b wurden doch explizit als bytes ge-casted.
... ich gehe mal davon aus das man die nicht abschalten bzw. unterbinden kann ...?
Gäbe es stat "==" noch 'ne Alternative ? Oder würde char das Problem lösen ? (kann ich mir aber kaum vorstellen ...)
Char wird auch automatisch nach int gecastet. Das kann man nicht abschalten. Aber da char unsigned ist, sollte es damit funktionieren.
Allerdings ist es unüblich für sowas char zu nehmen. Ich würde einfach für alle Werte int verwenden und erst beim Schreiben in das byte Array dann nach byte casten. Oder alternativ, wie schon erwähnt, bei jedem Vergleich ein &0xFF einfügen.