计算包含十六进制值的数组的模式?

时间:2017-01-17 22:45:25

标签: c# hex decimal

我正在用C#编程。

我一直在试验一些计算包含整数的数组模式的代码。即给定{5,6,2,1,5}模式为5。

我的问题是,这可以用十六进制值来完成吗?

例如,假设我有以下数组:

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

我怎样才能编写一个告诉我0x66是模式的程序?

我已经考虑过将它们转换为十进制值并找到那种方式,但效果似乎很低。

由于

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我认为任何集合的模式都是

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

答案 2 :(得分:0)

“十六进制数”与整数相同。不同之处在于它们以可视方式表示(在代码中,以及在转换为字符串时)。在二进制中它们完全相同。

所以无论你以前使用过什么代码

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

将与

完全相同
unsigned char[] list = new char[]{0x66, 0x60, 0xe7, 0xf0, 0x66};
FindMode(list);