Реверсивный порядок байтов в .NET

В приведенном ниже коде, почему X и Y принимают значения, отличные от того, что я думаю интуитивно?

Если байты 0-7 записываются в буфер, не должны ли получающиеся длинные байты иметь одинаковый порядок? Это похоже на чтение длинных значений в обратном порядке.

x    0x0706050403020100    long
y    0x0706050403020100    long
z    0x0001020304050607    long

MemoryStream ms = new MemoryStream();
byte[] buffer = new byte[] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 };
ms.Write(buffer, 0, buffer.Length);
ms.Flush();
ms.Position = 0;

BinaryReader reader = new BinaryReader(ms);
long x = reader.ReadInt64();
long y = BitConverter.ToInt64(buffer, 0);
long z = BitConverter.ToInt64(buffer.Reverse<byte>().ToArray<byte>(), 0);

byte[] xbytes = BitConverter.GetBytes(x);
byte[] ybytes = BitConverter.GetBytes(y);
byte[] zbytes = BitConverter.GetBytes(z);

(Я не знаю, что пометить этот вопрос, кроме .NET.)

BitConverter.IsLittleEndian

ложно Если мой компьютер с прямым порядком байтов, почему это происходит?

Это Windows 7 64-битная машинаЧетырехъядерный процессор Intel Core2 Quad Q9400 с частотой 2,66 ГГц LGA 775 95 Вт Модель BX80580Q9400SUPERMICRO MBD-C2SBX + -O LGA 775 Intel X48 ATX Материнская плата Intel

Результаты этого кода (в ответ на комментарий Джейсона):

byte[] buffer = new byte[] { 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 };
long y = BitConverter.ToInt64(buffer, 1);
Console.WriteLine(BitConverter.IsLittleEndian);
Console.WriteLine(y);

Результат:

False
506097522914230528

Ответы на вопрос(7)

Ваш ответ на вопрос