Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 计算包含十六进制值的数组的模式?_C#_Hex_Decimal - Fatal编程技术网

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

C# 计算包含十六进制值的数组的模式?,c#,hex,decimal,C#,Hex,Decimal,我正在用C语言编程 我一直在试验一些代码,这些代码计算包含整数的数组的模式。i、 e给定{5,6,2,1,5}模式为5 我的问题是,这可以用十六进制值来完成吗 例如,假设我有以下数组: unsigned char HEXVALUES[ ] = {0x66, 0x60, 0xe7, 0xf0, 0x66}; 我如何编写一个程序,告诉我0x66是模式 我曾考虑过将它们转换成十进制值,然后用这种方式找到模式,但似乎效率很低 谢谢十六进制值只是数值的一种表示形式。例如,这些都是相同十进制值102的表示

我正在用C语言编程

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

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

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

unsigned char HEXVALUES[ ] = {0x66, 0x60, 0xe7, 0xf0, 0x66};
我如何编写一个程序,告诉我0x66是模式

我曾考虑过将它们转换成十进制值,然后用这种方式找到模式,但似乎效率很低


谢谢

十六进制值只是数值的一种表示形式。例如,这些都是相同十进制值102的表示:

  • 66(十六进制)
  • 102(12月)
  • 01100110(垃圾箱)
因此,只需创建以十六进制格式编写的整数值数组,并使您的计算与任何其他整数值一样:

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

我想任何收集的方式都是

theCollection
  .GroupBy(x => x)
  .OrderByDescending(x => x.Count())
  .Select(g => g.FirstOrDefault())
  .First()
“十六进制数”和整数是一样的。区别在于它们的可视化表示方式(在代码中,以及转换为字符串时)。在二进制中,它们是完全相同的

所以不管你以前用过什么代码

unsigned char[] list = new char[]{5,6,2,1,5};
FindMode(list);
将以相同的方式工作

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

十六进制数(如0x66)是整数,将给出与十进制数相同的结果。Bot十六进制和十进制以二进制形式存储在内存中,并使用代码中指定的格式对字符串进行读/写操作。