Hi, Im running on a Intel computer (Win7 64-bit) and according to what I read Intel is using Little-Endian. I try this out in C# with the following code:
byte[] b2 = new byte[] { 0, 1 };
short b2short = BitConverter.ToInt16(b2, 0);
and b2short == 256 as expected from a Little-Endian.
Then I read that in .NET, the BitConverter.IsLittleEndian should reflect what endian the system is using, and when I check the variable in Visual Studio it reports false, ie it is NOT Little-Endian.
Does that have anything to do with 64-bit OS? Any ideas?
EDIT: My collegue, who sits across from me, did the same test (Win Vista 32-bit) and got the same results
EDIT 2: This is REALLY strange. Whenever I run the code, and break after the BitConverter did its thing, the IsLittleEndian == false. BUT, if I add the line Console.WriteLine(BitConverter.IsLittleEndian); afterwards it is TRUE:
byte[] b2 = new byte[] { 0, 1 };
short b2short = BitConverter.ToInt16(b2, 0);
Console.WriteLine(BitConverter.IsLittleEndian);
// Now the IsLittleEndian is true
But once I remove the Console.WriteLine it is false again.
I can also add that even if I break on the "Console.WriteLine" the IsLittleEndian == true, but if I remove the line altogether it is false.
EDIT 3: As Mark Gravell pointed out, this must be some timing-bug. If I use the variable BitConverter.IsLittleEndian it is initialized, if I dont (and look on it when breaking) its not initialized and thus false...