常见的几种表示颜色的方法有:

  1. ColorName: 直接用颜色的名称来指定颜色,比如: red blue green yellow

    • 优点: 很直观的表达想要使用的颜色
    • 缺点: 颜色的名称很少, 不能有效表示一些较为丰富的颜色
  2. RGB: 三通道颜色

    • 他是目前运用最广泛的颜色系统之一
    • 可以通过红绿蓝三色通道, 外加alpha透明度, 来展示几乎所有的颜色
    • RGB是从颜色的发光原理来设定的, 相当于红绿蓝三个颜色通过不同亮度, 来组合成为需要的颜色
    • 0为最暗, 255为最亮
  3. HEX: 十六进制颜色

    • 十六进制与RGB都可以展示出非常丰富的颜色, 他是通过16进制0~F这16个字符来表达颜色的
    • 同样, 000000为黑色, FFFFFF为白色

RGB转换为HEX

  • RGB与HEX中每个颜色都是一一对应的关系, 如下面的附表所示
  • RGB的数值 = 16 * HEX的第一位 + HEX的第二位
  • 示例如下:
    • RGB: 92, 184, 232
    • 92 / 16 = 5余12 -> 5C
    • 184 / 16 = 11余8 -> B8
    • 232 / 16 = 14余8 -> E8
    • HEX = 5CB8E8

HEX转换RGB

  • 此转换就是将上述的转换逆转即可
  • 示例如下
    • HEX: F26BC1
    • F2 = 15和2 -> 15 * 16 + 2 = 242
    • 6B = 6和11 -> 6 * 16 + 11 = 107
    • C1 = 12和1 -> 12 * 16 + 1 = 193

转载来源:简书

代码中如何使用十六进制的颜色?

使用演示:

方式一

 [UIColor colorWithRed:((0xF86340 & 0xFF00) >> 8)/255.0 green:((0xF86340 & 0xFF00) >> 8)/255.0 blue:((0xF86340 & 0xFF))/255.0 alpha:1];

方式二

+ (UIColor *)ml_colorWithHex:(UInt32)hex alpha:(CGFloat)alpha{CGFloat score_R = (hex & 0xFF0000) >> 16;CGFloat score_G = (hex & 0xFF00) >> 8;CGFloat score_B = (hex & 0xFF);return [UIColor colorWithRed:score_R/255.0 green:score_G/255.0 blue:score_B/255.0 alpha:alpha];
}

如何计算的?

0xF86340 & 0xFF0000, 0xF86340 & 0xFF00 ,0xF86340 & 0xFF 分别是什么意思?
0xF86340 & 0xFF0000 ,表示 F863400xFF0000 进行 运算,目的是要取出F86340的前两位F8,因为F8表示red颜色通道的值,取出来的值已经是转换好的十进制的了。

0xF86340
十六进制: F 8 6 3 4 0
二进制: 1111 1000 0110 0011 0100 0000
0xFF0000
十六进制: F F 0 0 0 0
二进制: 1111 1111 0000 0000 0000 0000

位运算

项目
0xF86340二进制: 1111 1000 0110 0011 0100 0000
运算符: &
0xFF0000二进制: 1111 1111 0000 0000 0000 0000
(计算结果)二进制: 1111 1000 0000 0000 0000 0000

通过位运算得到结果的1111 1000 0000 0000 0000 0000,如果将此二进制数转换为十进制数,是一个非常大的数,而每个颜色通道的最大值是255,所以还需要通过位移运算,将得到的结果控制到最大范围内。

如何位移运算?

首先我们先看下面一个二进制数:
0000 0000 0000 0000 1111 1111 ===> 该数最大的值是 255 (十进制)。
所以我们只要将之前计算的结果位移到最后的八个二进制位的位置上即可。

1111   1000     0000     0000      0000     0000  >> 16   右移16位0000   0000     0000     0000      1111     1000     (位移后的结果)

0xF86340 & 0xFF00F86340 & 0xFF 分别取出十六进制的 6340 通过位运算和位移运算 转换为十进制,进行颜色值的计算(计算原理和上述一样)。

转载来源:简书

16进制颜色转换RGB原理相关推荐

  1. [iOS 16进制颜色转换RGB](转)

    宏定义方法 #define RGB(r,g,b,a) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:a]#define ...

  2. RGB与16进制颜色转换的原理

    Integer有进制转换的方法.也可以自己写进制转换的方法.

  3. js将16进制颜色转换成RGB格式

    js代码如下: function hexToRgb(hex) {     var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(h ...

  4. JavaScript中16进制颜色与rgb颜色互相转换

    16进制转 rgb function hexToRgba(hex, opacity) {if (!hex) hex = '#ededed';let rgba = 'rgba(' + parseInt( ...

  5. iOS 将16进制颜色转换成UIColor

    很多地方我们都使用16进制颜色,但iPhone使用的是UIColor对象,不直接支持16进制颜色,为此,需要我们手动将16进制颜色转换为UIColor - (UIColor *) hexStringT ...

  6. iOS开发-16进制颜色转换

    项目中经常会用到颜色转换,有的是通过十六进制转成数字转颜色,想简单的点直接通过字符串转一下,简单扩展了一下分类UIColor,代码如下: +(UIColor *)colorWithHex:(NSStr ...

  7. 16进制颜色值 与 rgb颜色值转换

    16进制颜色 转换成 rgb hex2rgb(hexColor) {hexColor = hexColor.substring(1)hexColor = hexColor.toLowerCase()l ...

  8. 16进制颜色及不透明度参考 转换

    一.16进制颜色转换 点击访问 二.不透明度转换 100% - FF(完全不透明) 99% - FC 98% - FA 97% - F7 96% - F5 95% - F2 94% - F0 93% ...

  9. iOS 直接使用16进制颜色

    在做iOS开发时,一般我们会吸色,就是产品给的图我们一般会吸色,但是最近吸色时候,老大说有较大的颜色偏差,所以要求我们直接使用UI给出的额16进制颜色,你也可以搜索<RGB颜色值转换成十六进制颜 ...

  10. iOS之颜色的调用、显示16进制颜色、渐变色

    十六进制颜色 #import <UIKit/UIKit.h>NS_ASSUME_NONNULL_BEGIN@interface UIColor (HexColor) + (UIColor ...

最新文章

  1. 通过internet在计算机之间以用户名,第7_8章_计算机网络与internet应用.doc
  2. 《Linux菜鸟入门》认识linux系统
  3. Android Sensor——传感器
  4. php api命名历史,历史上的今天,php接口源码api
  5. 线性代数二之矩阵加速DP——数学作业,Arc of Dream
  6. C++类模板5分钟入门
  7. 深度学习(五十七)tensorflow andorid yolo物体检测测试
  8. rk3288对于parameter参数文件的解析处理【转】
  9. SQL数据旋转的问题
  10. 第十章第二节 阿基米德原理
  11. matlab重叠图像块拼接,在matlab中拼接图像时如何正确混合?
  12. 多项式承诺Polynomial commitment方案汇总
  13. 电脑自主发送信息--python程序
  14. 生意经之王安论断:网店营销当机立断才能抓住机遇
  15. arm服务器还是x86架构的服务器,哪个稳定?
  16. qbittorrent 等待_qBittorrent下载BT电影教程
  17. 字节数组byte[]转有符号short和无符号unsignedShort
  18. Python内置函数 vars()函数
  19. 郝志峰《概率论与数理统计》期末复习笔记
  20. 生命科学50讲 | 生命·智能 | 笔记和点评

热门文章

  1. 字典树(前缀树/后缀树)
  2. HTML5页面增强元素
  3. excel替换快捷键_收集一些常用的快捷键
  4. 小米计算机视觉算法工程师面试题
  5. LVDS接口定义详解
  6. vue echarts 地图往下穿透到县
  7. make 与makefile(会不会写 makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。)...
  8. 手机app测试方法(二)App测试-常见测试点
  9. seaweedfs学习
  10. 叉乘与空间曲线的切向量