Pregunta

Esto no es una cuestión tanto como se trata de una prueba de cordura!

Si usted necesita para leer 4 bytes en Java como una máscara de bits en Big Endian y esos bytes eras:

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

Hacer eso en un int sería: 112130

El binario sería: 00000000000000011010011000000010

El endian de una serie de bytes no afectaría a la posición de bit, ¿verdad?

Gracias

Tony

¿Fue útil?

Solución

Endian-dad refleja el orden de los bytes, pero no el orden de los bits dentro de esos bytes.

Vamos a decir que quiero representar el (de dos bytes) palabra 0x9001. Si tan sólo escribo esto en binario, que sería 1001000000000001.

Si yo tiro los bytes (de dirección de menor a mayor) en una máquina-big endian, me gustaría ver 10010000 00000001.

Si yo tiro los bytes (de dirección de menor a mayor) en una máquina ascendente hacia la izquierda, me gustaría ver 00000001 10010000.

Otros consejos

En general, si lo que estás leyendo desde le está dando bytes enteros, entonces no es necesario preocuparse por el orden de los bits que componen esos bytes: es simplemente el orden de los bytes que importa, como que suponga correctamente.

El tiempo es posible que tenga que preocuparse por el "orden de bits" de bits individuales es donde está realmente la lectura / escritura de un flujo de bits en lugar de bytes enteros (por ejemplo, si estuviera escribiendo un algoritmo de compresión que operaba a nivel de bits , que tendría que tomar una decisión acerca de lo que el fin de escribir los bits).

Lo único que hay que prestar atención es exactamente cómo "leer 4 bytes en Java" - ahí es donde las cosas endianness y se puede estropearlo (DataInputStream asume big endian). Una vez que el valor que he leído ha convertido en el int 112130, ya está listo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top