因此,我正在使用Javascript创建图形化的Bash PS1 Generator。用户可以从调色板(jscolor库)中为他们想要的任何元素选择任何颜色。我得到的值是该颜色的RGB表示。我想将该值转换为0-255之间的数字,以便可以用Bash表示。
示例:
输入:#000000
输出:0
输入:#FFFFFF
输出:255
任何其他输入都转换为最接近的8位表示形式
**我检查了此post,但答案却不太奏效(输入#FFFFFF的输出为215)。
答案 0 :(得分:1)
由于使用了调色板,您将获得0xFFFFFF的输出215。
所谓的“网络安全”调色板包含216种(6 ^ 3)颜色,其中成分等级(ir * 255/5, ig * 255/5, ib * 255/5)
用于冲击ir,ig,ib = 0..5
,另外还有40种颜色,例如“金钱绿色”或“嫩鲑鱼” ”。
因此,此类调色板的索引215实际上包含0xFFFFFF
RGB。
答案 1 :(得分:0)
这是一个(不好的)主意:
let rgb24=0x99FFBB
let r2="($rgb24 >> 16) >> 6"
echo "$r2"
let g2="(($rgb24 >> 8) % 256) >> 6"
echo "$g2"
let b2="($rgb24 % 256) >> 6"
echo "$b2"
let rgb8="($r2 << 4) + ($g2 << 2) + $b2"
printf "%x\n" $rgb24
printf "%x\n" $rgb8
因此,现在每种颜色都有两种颜色强度:红色,绿色和蓝色。
如何显示这种东西取决于您自己。最简单的操作是将每种成分的颜色位移6,然后重建原始的24位颜色值。每种颜色总共有四种不同的强度,或64种独特的颜色。