【发布时间】:2014-03-09 17:42:03
【问题描述】:
我计算出有 16,777,216 种可能的十六进制颜色代码组合。
单个十六进制字符最多可以有 16 个字符,一个十六进制颜色代码最多可以包含 6 个字符,这让我得出了 16^6 的结论。
这是正确的吗?如果没有,请告诉我有多少种可能的颜色组合以及如何计算出来。
【问题讨论】:
-
应该是 16^6。略有不同...
我计算出有 16,777,216 种可能的十六进制颜色代码组合。
单个十六进制字符最多可以有 16 个字符,一个十六进制颜色代码最多可以包含 6 个字符,这让我得出了 16^6 的结论。
这是正确的吗?如果没有,请告诉我有多少种可能的颜色组合以及如何计算出来。
【问题讨论】:
有 16,777,216 种颜色使用 #RRGGBB 表示法。
每个颜色通道使用 1 个字节的信息进行描述。字节可以包含 256 个不同的值。所以对于 3 个频道,它是:
256^3 = 16,777,216 = 16M
但是,现代浏览器支持透明度 - #AARRGGBB,通过类似的逻辑你会得到:
256^4 = 4,294,967,296 = 4G
【讨论】:
是的,我做了一个简单的节点程序返回所有可能的十六进制代码的数组,这里是代码
function getColors(){
var hexCode = [0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E' ,'F'];
var arr = [];
for (var i = 0; i < hexCode.length; i++) {
console.log(`i done it ${i+1} times`);
for (var y = 0; y < hexCode.length; y++) {
for (var x = 0; x < hexCode.length; x++) {
for (var a = 0; a < hexCode.length; a++) {
for (var b = 0; b < hexCode.length; b++) {
for (var c = 0; c < hexCode.length; c++) {
arr.push(`#${hexCode[i]}${hexCode[y]}${hexCode[x]}${hexCode[a]}${hexCode[b]}${hexCode[c]}\n`);
}
}
}
}
}
}
return arr;
}
var colors = getColors();
console.log(colors.length);
但是,当我运行它时,它会记录到控制台:16 777 216。
【讨论】:
rgba() 颜色系统中目前有 184,549,376 个可能的颜色组合,即
R:0 到 255(256 个值)×
G:0 到 255(256 个值)×
B:0 到 255(256 个值)×
A:0.0 到 1.0(11 个值)
【讨论】:
有两种写颜色的方法。 RGB (rgb(R,G,B)),红色、绿色和蓝色的范围为 0-255。第二种方式是十六进制(#RRGGBB)。
十六进制共有 6 位数字,每种颜色 2 位数字。十六进制的最大两位数为FF,以10为底为255。
如果你考虑一下。 RGB 和 HEX 的相似之处在于允许您输入 3 个数字作为红色、绿色和蓝色值。每个数字的最大值为255。
以 10 为底的 6 个十六进制数字的最大值为 16,777,215。如果您还添加 #000000,您将获得 16,777,216 作为可能颜色组合的总数。
如果我们使用 RGB,颜色范围是 0-255。这意味着每个红色、绿色和蓝色都有 256 个可能的值。 256^3 是 16,777,216。
因此,您的问题的答案是 16,777,216。不管你怎么算。
【讨论】:
好吧,我认为它是 16777216,因为我的十六进制转换器说 ffffff 是 16777215。ffffff 是最高的十六进制颜色代码,所以这将是 16777215。但是,也有 000000,这使得答案为 16777216,因为它不包括 000000。 谁输入了 16777216,你是对的。
【讨论】: