2013-10-08 1 views
-5

У меня есть массив с зацикленным байтом byte[][], я пытаюсь получить максимальное значение его элементов массива sub.Сравните два байтовых массива и найдите, какой из них больше

Я создал метод:

private byte[] Max(byte[][] arrBytes) 
{ 
    var max = arrBytes[0]; 
    foreach (var arr in arrBytes) 
    { 
     if (max != null && arr != null) 
      if() // => How to say max > arr 
       max = arr; 
    } 
    return max; 
} 

Как я могу вернуть массив макс байт из приведенной выше методы?

Редактировать Ко всем, кто спрашивает, что это мера или определение слова bigger означает, что я говорю, что зазубренный массив содержит (метки времени) тип данных SQLServer (VARBINARY (8)), данные выглядит следующим образом

enter image description here

массив байтов представляют (например: 0x00000000013F3F3F)

+4

Как вы определяете, что один массив больше другого? – BartoszKP

+0

@BartoszKP Если бы я знал ответ, я бы не поставил вопрос здесь! – SVI

+2

@SVI Вы сказали нам, что хотите найти, какой массив «больше». Вы должны определить, какие большие средства для вашего приложения. Больше по длине (количество элементов)? Чем больше сумма всех элементов? Вы должны знать, чего хотите. –

ответ

2

Возможно преобразование в long и сравнивая бы вам помочь?

// Note: you should ensure that the arrays have at least 8 bytes! 
// Although from your edits, it sounds like your "jagged" array isn't jagged at all 
if (BitConverter.ToUInt64(max,0) > BitConverter.ToUInt64(arr,0)) 
{ 
    // do whatever. 
} 

Но остерегайтесь различий в байтовых заказах. Это будет работать, если ваша метка времени - это просто количество тиков. Если это фактическая дата, вам нужно будет найти подходящее преобразование.

0

Вы ищете что-то вроде этого?

private byte[] Max(byte[][] arrBytes) 
    { 
     byte[] max = new byte[arrBytes.GetLength(0)]; 
     int i = 0; 
     foreach (byte[] arr in arrBytes) 
     { 
      byte m = 0; 
      foreach (byte b in arr) 
      { 
       m = Math.Max(m, b); 
      } 
      max[i] = m; ++i; 
     } 
     return max; 
    }