我正在用C#编程。
我一直在试验一些计算包含整数的数组模式的代码。即给定{5,6,2,1,5}
模式为5。
我的问题是,这可以用十六进制值来完成吗?
例如,假设我有以下数组:
unsigned char HEXVALUES[ ] = {0x66, 0x60, 0xe7, 0xf0, 0x66};
我怎样才能编写一个告诉我0x66是模式的程序?
我已经考虑过将它们转换为十进制值并找到那种方式,但效果似乎很低。
由于
答案 0 :(得分:1)
十六进制值只是数值的表示。例如。这些都是相同的十进制值102的表示:
因此,只需创建以十六进制格式编写的整数值数组,并使计算与任何其他整数值一样:
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);