Estoy tratando de leer un archivo binario con la clase BinaryReader, y tengo que leerlo como bloques de UInt32, y luego hacer un poco de desplazamiento, etc. afterwords.¿Por qué BinaryReader.ReadUInt32() invierte el patrón de bits?
Pero, por alguna razón, el orden de los bits se invierte cuando uso el método ReadUInt32.
Si yo por ejemplo tengo un archivo en el que los primeros cuatro bytes es la siguiente con hexagonal, 0x12345678
, que terminar así después de ser leído por ReadUInt32: 0x78563412
.
Si utilizo los readBytes (4) método, me sale la matriz esperada:
[0x00000000] 0x12 byte
[0x00000001] 0x34 byte
[0x00000002] 0x56 byte
[0x00000003] 0x78 byte
¿Por qué es esto? ¿Es solo la forma en que .net representa uints en la memoria? ¿Es lo mismo en las diferentes plataformas (estoy ejecutando 64 bits en Windows 7, .net 3.5 sp1)?
¿Puede calmar nuestra curiosidad diciéndonos cómo la solucionó? :) –
Por supuesto :) En realidad no importa en qué dirección esté el orden de bytes, siempre que sea consistente en plataformas (x64, x86), aún puedo extraer los bits que necesito, solo tengo que cambiar mi bit cambiando. Por lo que puedo ver, uint está en general almacenado como little-endian, no solo la creación de uint por ReadUInt32, por lo que hace todo más fácil. –