RGB和HEX颜色互相转换

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

    • ColorName: 直接用颜色的名称来指定颜色
      • 优点: 很直观的表达想要使用的颜色
      • 缺点: 颜色的名称很少, 不能有效表示一些较为丰富的颜色
    • RGB: 三通道颜色
      • 他是目前运用最广泛的颜色系统之一
      • 可以通过红绿蓝三色通道, 外加alpha透明度, 来展示几乎所有的颜色
      • RGB是从颜色的发光原理来设定的, 相当于红绿蓝三个颜色通过不同亮度, 来组合成为需要的颜色
      • 0为最暗, 255为最亮
    • HEX: 十六进制颜色
      • 十六进制与RGB都可以展示出非常丰富的颜色, 他是通过16进制0~F这16个字符来表达颜色的
      • 同样, 000000为黑色, FFFFFF为白色
  2. 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
  3. 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
  4. OC代码, 16进制转换为RGB形式的UIColor

    • 首先, 代码如下
        #define UIColorFromRGB(rgbValue) \
        [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16)) / 255.0 \
        green:((float)((rgbValue & 0x00FF00) >> 8)) / 255.0 \
        blue:((float)((rgbValue & 0x0000FF) >> 0)) / 255.0 \
        alpha: 1.0]
  • 接下来说一下代码的意思

    • 首先, rgbValue是一个十六进制的参数, 里面需要传入一个16进制的数字, 这里需要注意16进制的数字一定要以0x开头, 如0x4F8ADE
    • (rgbValue & 0xFF0000) >> 16, 先做按位与运算, 然后按位右移
      1. 将两个16进制转换为2进制的数字
      2. 按位与, 两位只要出现0, 结果就为0
      3. 将结果按位移动16位(这里是为了获取得到的16进制的前两位)
      4. 将得到移动后的2进制, 转换为10进制, 然后除以255.0, 结果就是对应的颜色值
  • 以上就是16进制颜色转为2进制的步骤, 鼓励自己学习研究更多~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • CSS 通过使用十六进制代码设置特定的颜色预览模式 你是否知道在 CSS 中还有其他表示颜色的方法?其中的一种方法...
    followyounger1阅读 924评论 0 1
  • 网站乱码问题我们会经常碰到,大多见于非英文的中文字符或其他字符乱码,而且,这类问题常常是因为编码方式问题,主要原因...
    波段顶底阅读 2,985评论 1 9
  • 前言 大家都知道iOS的UIColor提供的自定义初始化是通过RGB(A) 4个10进行制的参数,那么为什么用16...
    iHTCboy阅读 773评论 0 1
  • 今天写一篇关于RGB转Hex 和 Hex 转 RGB的文章,首先可以先点下面这篇进行基础补充 十进制与十六进制互转...
    瞬步刀式阅读 1,176评论 0 1
  • 当我在已经忘记了还有 HSL 这么个东西,最近却又用上了它的时候,我觉得还是有必要写一点关于颜色的总结(不涉及 I...
    七月初七的柒阅读 1,681评论 0 0