Я храню числа в формате, эквивалентном их байтам, используя наименьшее возможное количество байтов. В диапазоне от 65535 до 16777215 BitConverter дает мне 4-байтовый массив, но я хочу хранить только 3 байта.
Для приведенного ниже кода мой массив равен [0]254, [1]255, [2]255, [3]0, поэтому я могу вырезать байт [3]. Это на процессоре Core i7. В моем производственном коде перед копированием массива я проверяю BitConverter.IsLittleEndian, чтобы определить, могу ли я отрезать последний байт.
int i = 16777214;
byte[] bytesTemp = BitConverter.GetBytes(i);
byte[] value = null;
if (BitConverter.IsLittleEndian)
Array.Copy(bytesTemp, 0, value, 0, 3);
Мой вопрос: нужно ли мне заботиться о Endian-ness системы, или CLR просто использует этот формат LittleEndian? У меня нет системы BigEndian (и я даже не знаю, как ее получить), чтобы проверить, выходит ли мой массив байтов в обратном порядке.