Frage

Dies ist keine Frage, wie es sich um eine Vernunftprüfung handelt!

Wenn Sie 4 Bytes als Bitmaske in Big Endian in Java lesen mussten und diese Bytes waren:

0x00, 0x01, 0xb6, 0x02.

Das zu einem int zu machen, wäre: 112130

Die Binärdatei wäre: 00000000000000011010011000000010

Der Endian einer Reihe von Bytes würde die Bitposition nicht beeinflussen, oder?

Vielen Dank

Tony

War es hilfreich?

Lösung

Endian-Ness spiegelt die Reihenfolge von Bytes wider, jedoch nicht die Ordnung der Bits in diesen Bytes.

Nehmen wir an, ich möchte das (Zwei-Byte-) Wort 0x9001 darstellen. Wenn ich dies nur in Binärdatum tippe, wäre das 1001000000000001.

Wenn ich die Bytes (von niedrigerer Adresse bis höher) auf eine Big-Endian-Maschine abwerfen würde, würde ich sehen 10010000 00000001.

Wenn ich die Bytes (von niedrigerer Adresse bis höher) auf eine Little-Endian-Maschine abwerfen würde, würde ich sehen 00000001 10010000.

Andere Tipps

Wenn Sie im Allgemeinen ganze Bytes lesen, müssen Sie sich im Allgemeinen keine Sorgen über die Reihenfolge der Bits machen, die diese Bytes ausmachen .

In der Zeit, in der Sie sich möglicherweise um die "Endianess" einzelner Bits kümmern müssen, lesen/schreiben Sie tatsächlich einen Strom von Bits und nicht um ganze Bytes (z. B. wenn Sie einen Komprimierungsalgorithmus schreiben, der auf Bit -Ebene operierte, Sie ' Ich muss eine Entscheidung darüber treffen, in welcher Reihenfolge die Teile geschrieben werden).

Das einzige, was Sie aufmerksam machen müssen, ist, wie genau Sie "4 Bytes in Java lesen" - dort ist Endiangess von Bedeutung und Sie können es vermasseln ((können Sie es vermasseln (es könnenDataInputStream Angenommen Big Endian). Sobald der Wert, den Sie gelesen haben, zum Int 112130 geworden ist, sind Sie festgelegt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top