Question

Ce n'est pas une question autant qu'il est un chèque de bon sens!

Si vous avez besoin de lire 4 octets en Java comme un masque de bits Big Endian et les octets sont:

0x00, 0x01, 0xB6, 0x02.

Faire cela en un int serait: 112130

Le binaire serait: 00000000000000011010011000000010

Le endian d'une série d'octets ne serait pas une incidence sur la position de bit, serait-il?

Merci

Tony

Était-ce utile?

La solution

Endian-ness reflète l'ordre des octets, mais pas l'ordre des bits dans les octets.

Le mot Let que je veux représenter le mot (deux octets) 0x9001. Si je viens de taper ceci en binaire, ce serait 1001000000000001.

Si je vider les octets (de l'adresse inférieure à la hausse) sur une machine big-endian, je verrais 10010000 00000001.

Si je vider les octets (de l'adresse inférieure à la hausse) sur une machine peu endian, je verrais 00000001 10010000.

Autres conseils

En général, si la chose que vous lisez de l'état entier vous donnez octets, alors vous n'avez pas à vous soucier de l'ordre des bits qui composent ces octets: il est juste l'ordre des octets qui importe, comme vous supposez correctement.

Le temps que vous pourriez avoir à vous soucier de la « boutisme » de bits individuels est l'endroit où vous êtes en train de lire / écrire un flux de bits plutôt que entiers octets (par exemple si vous écriviez un algorithme de compression qui fonctionne au niveau du bit , vous auriez à prendre une décision sur ce que l'ordre d'écrire les bits).

La seule chose que vous devez faire attention est exactement comment vous « lire 4 octets en Java » - c'est là des questions de endianness et vous pouvez mess it up (DataInputStream suppose big endian). Une fois que la valeur lue AVONS est devenue l'int 112130, vous êtes ensemble.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top