Javascript生成n种不是随机的颜色

问题描述

我必须确保根据过去的数值生成颜色。

例如我有数字 n 必须返回颜色 (n),10 -> color (10)

所以每次我传递相同的数字时,相同的颜色必须始终返回给我。

不能有两个数字给我相同的颜色。

问题是我不知道这个 n 可以有多大,所以我无法定义一组预设颜色。

有人可以帮我吗?

解决方法

如果它是十六进制颜色,那么您可以简单地使用这两个函数在它们之间进行转换。

var number = parseInt('ffd800',16);
console.log(number);

var hex = number.toString(16);
console.log(hex)

,

您可以通过一点位移将 RGB 转换为单个整数..

function RGBToInt(red,green,blue){
    let rgb = (red<<8)+green;
        rgb = (rgb<<8)+blue;
    return rgb;
}

由于 R、G 和 B 是 0 到 255 之间的整数,因此最终整数的范围是 0 到 16777215。 要从整数中取回单独的 R、G 和 B,您需要以另一种方式移动

function IntToRGB(rgb){
    let colors = {};
    colors.red = (rgb>>16) & 0xFF;
    colors.green = (rgb>>8) & 0xFF;
    colors.blue = rgb & 0xFF;
    return colors;
}