Die Gewinnung bestimmter bits von binären Daten

Habe ich eine binäre Zahl, die wie folgt aussieht:

00000000 00000000 00000011 00001101 = 781 integer Wert = integer name "verpackt"

Wie bin ich in der Lage, extrahieren Sie alle diese als getrennte integer-Werte mit bit-wise in java. Wie die folgenden:

int a = (function) = 00000000;
int b = (function) = 00000000;
int c = (function) = 00000011;
int d = (function) = 00001101;

Wenn Sie sehen können, was ich Tue, bis es.. ich will die ersten 8 in eine Ganzzahl am nächsten zu einem zweiten integer und so weiter.. ich denke, Sie tun dies mit bit-wise in java, aber ich bin völlig unsicher. Jede Hilfe ist willkommen. Sorry, aber ich bin völlig neu auf diese Art der Sache und brauche wirklich Hilfe mit diesem, vielen Dank! Grundsätzlich (Funktion) soll gleich so etwas wie dieses:

packed >> 5; (I know this isn't nearly right that is why i am needing help on this)...

Diese Frage beantwortet war für mich vor 2 Tagen und es funktionierte perfekt in Ordnung, aber jetzt ist es kaputt... ich habe KEINE Ahnung warum.. hier ist die Methode, die ich verwendet, dies zu tun:

public static int getNthByte(int n, int packed) 
{
   //shift the desired bits into the last 8 bits
   int shifted = packed >> (8 * n);
   //and now get those bits
   int masked = 0x000000FF & shifted;
   return masked;
}

Aber wenn ich diese code-Zeile: ich bekomme diese Antwort:

int x = 781;
System.out.println(getNthByte(3, x)); (Which should give me 00001101, in integer value)

Ich printlns die folgenden:

0

Warum? Dies funktionierte gut für mich gestern... aber mir ist aufgefallen Wenn ich das getan habe:

System.out.println(getNthByte(5, x));

Er gab mir die 3. bit:

3

Das war richtig...

tl;dr diese Methode funktioniert wurde gestern nun es ist alles Durcheinander und ich brauche Hilfe es zu beheben oder vielleicht ist es mein Fehler? Ich weiß nicht.. Gestern habe ich in getNthByte(3,x), und es gab mir die richtigen integer-Wert bezogen auf 00001101...

Jede Hilfe ist geschätzt.. vielleicht gibt es etwas falsch mit der Methode? oder geht es nur mir so?

  • Versuchen Sie, alle vier bytes der Funktion (n = 0, 1, 2 & 3). Sie möglicherweise feststellen, dass Sie das zählen von verschiedenen enden.
InformationsquelleAutor user2494817 | 2013-06-17
Schreibe einen Kommentar