有没有办法从颜色中获取唯一的哈希码



我正在尝试从颜色数组中获取唯一的哈希代码。根据数组的设置方式,代码必须是唯一的。最终,我想使用此哈希代码与从另一个生成的另一个哈希代码进行比较(以检查它们是否在同一索引中具有相同的颜色)。

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

相关内容

  • 没有找到相关文章

最新更新