swift - 在 Swift 中将 RGB 转换为十六进制
问题描述
我正在尝试将我的 rgb 颜色转换为十六进制值。不幸的是,它总是返回 000000。这是我尝试过的代码:
let red = CGFloat(drand48())
let green = CGFloat(drand48())
let blue = CGFloat(drand48())
let hexValue = String(format:"%02X", red) + String(format:"%02X", green) + String(format:"%02X", blue)
解决方案
这是生成 3 个随机数并将它们转换为十六进制字符串的更好方法:
let red = Int.random(in: 0...255)
let green = Int.random(in: 0...255)
let blue = Int.random(in: 0...255)
let hex = String(format:"%02X%02X%02X", red, green, blue)
您的代码不起作用的原因是您的数字CGFloat
在 0.0 到 1.0 的范围内。但是您的字符串格式将它们视为Int
值。
除此之外,使用drand48
要求您先播种它们。
推荐阅读
- javascript - 将表格和行添加为 html 元素时,jQuery 会关闭内容
- angular - 如何在没有库的情况下在 Angular 5 中初始化 Boostrap 元素或物化 css?
- neo4j - Neo4j Lucene 多词自动提示模糊全文搜索的查询语法
- html - 如何在 django html 模板中添加 if 函数
- odoo - 无法在 Odoo 12 EE 中向 Many2many 添加项目
- spring-mvc - 为什么在spring mvc中配置很多servlet
- python - python输入到另一个.py文件
- typescript - 通知 typescript 函数抛出了异常
- c# - 转换在 LINQ 对象中创建的值
- javascript - 在 angularjs ui-select 指令中更新后,如何默认设置搜索字段中的更新值?