Einzelnen Beitrag anzeigen

Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#1

[Java] Bit-Operationen mit signed ints und bytes

  Alt 17. Jan 2008, 13:56
Ich steh gerade ein bisschen vor einem Problem. Java an sich kennt ja keine unsigned ints, bytes, ect., sondern alle Ganzzahltypen brauchen ein Vorzeichen.
Jetzt habe ich allerdings eine Bitmaske, gespeichert in einem byte, und muss die auf einen int anwenden.
Als kleines Beispiel:
Code:
public int foo(int Value, byte Mask)
{
  return Value & Mask;
}
//...
foo(0x00FF00FF, (byte)-1)
Natürlich kann er keinen int und byte so kombinieren, also wandelt er das byte vorher in einen int um, und genau da entsteht das Problem:
Die beabsichtigten Werte sind nämlich: 0x00FF00FF & 0xFF, soll also 0x000000FF ergeben, passiert allerdings nicht, da er nicht 255, sondern -1 in einen int konvertiert, und somit 0xFFFFFFFF als int-Maske ausspuckt, was dann zu nem anderen Ergebnis führt.

Das einzige, das mir derzeit einfällt ist, dass ich der Maske vorher das Vorzeichen-Bit nehme, dann in einen int konvertiere, falls vorher vorhanden das Vorzeichenbit rein"odere", und dann die beiden Werte ver"unde". Aber irgendwie scheint mir diese Möglichkeit für mein Vorhaben etwas aufwändig, und relativ umständlich, gibt es hier nicht einen anderen, einfacheren Weg?

greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat