Estoy corriendo en una computadora Intel (Win7 de 64 bits) y de acuerdo con lo que leo Intel está usando Little-Endian. Trato esto en C# con el siguiente código:IsLittleEndian reportes de campo falso, pero debe ser Little-Endian?
byte[] b2 = new byte[] { 0, 1 };
short b2short = BitConverter.ToInt16(b2, 0);
y b2short == 256 como se espera de un little-endian.
Después leí que en .NET, el BitConverter.IsLittleEndian debe reflejar lo endian el sistema está utilizando, y al comprobar la variable en Visual Studio informa falsa, es decir, no es little-endian.
¿Tiene algo que ver con el sistema operativo de 64 bits? ¿Algunas ideas?
EDIT: Mi colega, que está sentado frente a mí, hizo la misma prueba (Win Vista 32-bit) y obtuvo los mismos resultados
EDIT 2: Esto es realmente extraño . Cada vez que ejecuto el código, y rompo después de que el BitConverter hiciera lo suyo, el IsLittleEndian == falso. PERO, si agrego la línea Console.WriteLine (BitConverter.IsLittleEndian); posteriormente es cierto:
byte[] b2 = new byte[] { 0, 1 };
short b2short = BitConverter.ToInt16(b2, 0);
Console.WriteLine(BitConverter.IsLittleEndian);
// Now the IsLittleEndian is true
Pero una vez que se quita la Console.WriteLine es falsa nuevo.
También puedo agregar que incluso si rompo en "Console.WriteLine" el IsLittleEndian == verdadero, pero si elimino la línea por completo es falso.
Datos 3: Como Mark Gravell señaló, esto debe haber algún momento de errores. Si utilizo la variable BitConverter.IsLittleEndian, se inicializa, si no lo hago (y lo miro al romper) no está inicializado y por lo tanto falso ...
¿Qué inteligencia es? ¿Podría ser IA64? Aunque me han asegurado que incluso en IA64 podría usar LE. –
Re the Console.WriteLine - vea mi punto sobre "beforefieldinit" ... –
Estoy usando un procesador Intel i920 ... – Ted