我正在尝试从颜色数组中获取唯一的哈希代码。根据数组的设置方式,代码必须是唯一的。最终,我想使用此哈希代码与从另一个生成的另一个哈希代码进行比较(以检查它们是否在同一索引中具有相同的颜色)。
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WindowsFormsApplication1
{
public class Test
{
public Color[] GridMap { get; set; }
private Color[] ColorSet
{
get
{
var colors = new[]
{
Color.Aquamarine,
Color.Azure,
Color.Red,
Color.Blue
};
return colors;
}
}
public Test()
{
GridMap = new Color[24];
var random = new Random();
for (int i = 0; i < GridMap.Length; i++)
{
GridMap[i] = ColorSet[random.Next(0,3)];
}
}
public ulong GetUniqueCodeFromGridMap()
{
// Dont Know how to implement this yet !
return 0;
}
}
}
一个简单的方法是使用类似Enumerable<Color>.SequenceEqual
bool b = colors1.SequenceEqual(colors2);
如果你真的想创建一个哈希代码,你可以写一个像
var bytes = new Color[] { Color.Red, Color.Blue }
.Select(x => BitConverter.GetBytes(x.ToArgb()))
.SelectMany(x => x)
.ToArray();
var hashCode = SHA256.Create().ComputeHash(bytes);
现在你应该比较hashCodes
....(再次您可以使用SequenceEqual
)