Domanda

Questa non è una domanda tanto quanto si tratta di un controllo di integrità!

Se avete bisogno di leggere 4 byte in Java come maschera di bit in big endian e quei byte sono stati:

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

Fare questo in un int sarebbe: 112130

Il binario potrebbe essere: 00000000000000011010011000000010

L'endian di una serie di byte non sulla posizione di bit, vero?

Grazie

Tony

È stato utile?

Soluzione

Endian-ità riflette l'ordinamento di byte, ma non l'ordinamento dei bit all'interno di tali byte.

dire Let voglio rappresentare la parola (due byte) 0x9001. Se mi basta digitare questo fuori in binario, che sarebbe 1001000000000001.

Se il dump del byte (da indirizzo più basso al più alto) su un big-endian macchina, avrei visto 10010000 00000001.

Se il dump del byte (da indirizzo più basso al più alto) su un little-endian macchina, avrei visto 00000001 10010000.

Altri suggerimenti

In generale, se la cosa si sta leggendo te sta dando byte interi, allora non c'è bisogno di preoccuparsi per l'ordine di bit che compongono tali byte: è solo l'ordine dei byte che conta, come si supponga correttamente.

Il tempo potrebbe essere necessario preoccuparsi della "endianness" dei singoli bit è dove si sta in realtà la lettura / scrittura di un flusso di bit piuttosto che byte interi (ad esempio se si stesse scrivendo un algoritmo di compressione che operava a livello di bit , che avrebbe dovuto prendere una decisione su ciò che per scrivere i bit).

L'unica cosa che dovete fare attenzione è esattamente come te "Leggi 4 byte in Java" - è lì che le questioni endianness e si può rovinare tutto (DataInputStream assume big endian). Una volta che il valore di leggere'VE è diventato l'int 112130, siete a posto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top