2017-01-17 2 views
1

Я программирую на C#.Вычисление режима массива, содержащего шестнадцатеричные значения?

Я экспериментировал с некоторым кодом, который вычисляет режим массива, содержащий целые числа. с учетом {5,6,2,1,5} режим равен 5.

Мои вопросы: может ли это быть сделано с шестнадцатеричными значениями?

Например, позволяет сказать, что я имел следующий массив:

unsigned char HEXVALUES[ ] = {0x66, 0x60, 0xe7, 0xf0, 0x66}; 

Как я могу идти о написании программы, которая говорит мне, что 0x66 является режим?

Я думал о преобразовании их в десятичные значения и поиске способа таким образом, но это кажется неэффективным.

Благодаря

+0

шестнадцатеричное число, как 0x66 целые и даст те же результаты, как десятичное. Бот шестнадцатеричный и десятичный сохраняются в памяти, поскольку двоичные файлы считываются/записываются в строки с использованием указанного формата в вашем коде. – jdweng

ответ

1

шестнадцатеричное значение только представление числового значения. Например. все они являются представлениями же десятичного значения 102:

  • 66 (Hex)
  • 102 (Dec)
  • 01100110 (Bin)

Так просто создать массив целочисленных значений, записанные в шестнадцатеричном формат и сделать ваши расчеты как с любыми другими целыми значениями:

var array = new[] { 0x66, 0x60, 0xe7, 0xf0, 0x66 }; 
var mode = array.GroupBy(x => x).OrderByDescending(g => g.Count()).First().Key; 
Console.WriteLine($"{mode:X}"); // output int as hex 
0

Я полагаю, что режим любого коллектива ction is

theCollection 
    .GroupBy(x => x) 
    .OrderByDescending(x => x.Count()) 
    .Select(g => g.FirstOrDefault()) 
    .First() 
0

"Hex numbers" - это то же самое, что и целые числа. Разница заключается в том, как они визуально отображаются (в коде и при преобразовании в строки). В двоичном режиме они одинаковы.

Так любой код, который вы использовали раньше на

unsigned char[] list = new char[]{5,6,2,1,5}; 
FindMode(list); 

будет работать одинаково с

unsigned char[] list = new char[]{0x66, 0x60, 0xe7, 0xf0, 0x66}; 
FindMode(list); 
Смежные вопросы