Быстрый способ подкачать байты в массиве от обратного порядка байтов до прямого порядка байтов в C#

Ответ Jared корректен, но я нашел конкретное решение, это решило мою проблему.

http://blogs.msdn.com/vinsibal/archive/2008/12/17/wpf-datagrid-dynamically-updating-datagridcomboboxcolumn.aspx

Следование этому примеру, я изменил свое определение DataGridTextColumn:


    
        
    

И я не должен волноваться о столбце, наследовавшем DataContext. Это дает мне результат, который я хочу.

5
задан initialZero 21 October 2009 в 20:09
поделиться

3 ответа

Вот быстрый метод изменения порядка байтов для одиночных чисел в байтовом массиве:

public static unsafe void SwapSingles(byte[] data) {
  int cnt = data.Length / 4;
  fixed (byte* d = data) {
    byte* p = d;
    while (cnt-- > 0) {
      byte a = *p;
      p++;
      byte b = *p;
      *p = *(p + 1);
      p++;
      *p = b;
      p++;
      *(p - 3) = *p;
      *p = a;
      p++;
    }
  }
}
4
ответ дан 14 December 2019 в 08:54
поделиться

Как выглядит распорядок вашего коллеги? Если он обращается к байтам явно, вы можете изменить код (или, скорее, создать отдельный метод для данных с прямым порядком байтов) вместо того, чтобы изменять байты.

0
ответ дан 14 December 2019 в 08:54
поделиться

Я использую LINQ:

var bytes = new byte[] {0, 0, 0, 1};
var littleEndianBytes = bytes.Reverse().ToArray();
Single x = BitConverter.ToSingle(littleEndianBytes, 0);

Вы также можете .Skip() и .Take() на свое усмотрение, или же использовать индекс в методах BitConverter.

3
ответ дан 14 December 2019 в 08:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: