十六进制颜色码与RGB颜色值的转换

十六进制颜色码

十六进制颜色码就是在软件中设定颜色值的代码。在很多软件中,都会遇到设定颜色值的问题,发展来源人的眼睛看到的颜色有两种: 一种是发光体发出的颜色,比如计算机显示器屏幕显示的颜色; 另一种是物体本身不发光,而是反射的光产生十六进制颜色。
十六进制颜色码的表示形式:0xAABBCCDD:0x表示这是十六进制的数据,AA表示透明度, BB表示红, CC表示绿, DD表示蓝。
我们都知道十六进制的范围就是 0~F,所以透明度,红色、绿色、蓝色的值的范围就是 00~FF,化成十进制就是 0~255。

例如:在不考虑透明度(AA)的情况下,
红色为0xAAFF0000,
绿色为0xAA00FF00,
蓝色为0xAA0000FF,
黑色为0xAA000000

RGB

RGB色彩模式是通过对红®、绿(G)、蓝(B)三个颜色亮度的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个颜色。通常规定,每一种颜色强度最低为 0,最高为255。
例如:黑色为(0,0,0),意思是红色、绿色、蓝色的亮度为0,三种颜色混合之后为黑色。红色为(255,0,0),绿色(0,255,0),蓝色(0,0,255),三种颜色程度都变成最大(255,255,255)就是白色。

十六进制颜色码与RGB之间的关系

在网页上要指定一种颜色,就要使用RGB模式来确定,方法是分别指定R/G/B,也就是红/绿/蓝三种基色的强度,通常规定,每一种颜色强度最低为 0,最高为255,并通常都以16进制数值表示,那么255对应于十六进制就是FF,并把三个数值依次并列起来 ,以#开头。
例如,颜色值"#FF0000"为红色,因为红色的值达到了最高值 FF(即十进制的255),其余两种颜色强度为0,用RGB表示就是(255,0,0)。再例如"#FFFF00"表示黄色,因为当红色和绿色都为最大值,且蓝色为0时,产生的就是黄色,用RGB表示就是(255,255,0)。

十六进制颜色码转换成RGB

假设有一个十六进制颜色码0xAABBCCDD,然后转换它:

int a=(0xAABBCCDD & 0xFF000000)>>24 	//得到的是AA两位的值,透明度 
    
    int b=(0xAABBCCDD & 0x00FF0000)>>16 	//得到的是BB两位的值,红色 
    
    int c=(0xAABBCCDD & 0x0000FF00)>>8 		//得到的是CC两位的值,绿色 
    
    int d=(0xAABBCCDD & 0x000000FF) 		//得到的是DD两位的值,蓝色

对运算过程的理解

例如:(0xAABBCCDD & 0x00FF0000)>>16的运算
第一步运算:

0xAABBCCDD
&
0x00FF0000
----------
0x00BB0000  //结果

第二步运算:

int b=0x00BB0000>>16=0x0000BB=0xBB

运算的结果0x0000BB就是一种颜色的十六进制,转化成十进制,就是RGB中以0~255表示的(b,?,?)。