c# -在特定范围内创建字符串到整数的散列

本文关键字:整数 字符串 创建 范围内 | 更新日期: 2023-09-27 18:04:48

我正在尝试实现一种形式的随机颜色生成器。

我打算做的是创建一个字符串(员工的名字)的哈希值来生成一个十六进制值(#0到#FFFFFF),因此导致该员工始终对应于相同的颜色。

有没有人有可行的方法?

Thanks in Advance

编辑

            MD5 hasher = MD5.Create();
            var hashed = hasher.ComputeHash(Encoding.UTF8.GetBytes(r.Employee.Name));
            var intColor = BitConverter.ToInt32(hashed, 0);
            color = intColor.ToString("X");

这是我到目前为止所拥有的,然而似乎有一个问题,因为它显示的标准蓝色的一切

c# -在特定范围内创建字符串到整数的散列

由于#0#FFFFFF的范围是3个字节,我们可以像往常一样计算哈希,然后取前3个字节:

public static String md5_hash3(String value) {
  using (var hash = MD5.Create()) {
    return String.Concat(hash
      .ComputeHash(Encoding.UTF8.GetBytes(value))
      .Take(3)
      .Select(item => item.ToString("X2")));
  }
}

 String result = md5_hash3(r.Employee.Name); 

您可以尝试这样做:

int maxValue = int.Parse("FFFFFF", System.Globalization.NumberStyles.HexNumber);
var intColor = BitConverter.ToInt32(hashed, 0);
intColor = intColor % maxValue;
var color = intColor.ToString("X");

也不能保证你的颜色好看。