Sto provando a leggere un file binario con la classe BinaryReader, e ho bisogno di leggerlo come blocchi di UInt32, e poi fare un po 'di shifting afterc.Perché BinaryReader.ReadUInt32() inverte il pattern di bit?
Ma, per qualche motivo, l'ordine dei bit è invertito quando utilizzo il metodo ReadUInt32.
Se io per esempio ho un file in cui i primi quattro byte sembra che questo in esadecimale, 0x12345678
, finiscono in questo modo dopo essere stato letto da ReadUInt32: 0x78563412
.
se uso il metodo readBytes (4), ottengo l'array atteso:
[0x00000000] 0x12 byte
[0x00000001] 0x34 byte
[0x00000002] 0x56 byte
[0x00000003] 0x78 byte
Perché è questo? È solo il modo in cui .net rappresenta gli ui in memoria? È lo stesso tra le diverse piattaforme (sto utilizzando Windows 7 a 64 bit, .net 3.5 sp1)?
Riesci a sedare la nostra curiosità dicendoci come lo hai risolto? :) –
Ovviamente :) In realtà non importa quale sia l'ordine dei byte, purché sia coerente su platfroms (x64, x86), posso ancora estrarre i bit che mi servono, devo solo cambiare il mio bit mutevole. Per quanto posso vedere, uint è generalmente memorizzato come little-endian, non solo la build uint di ReadUInt32, quindi rende tutto più semplice. –