首页 > 解决方案 > 在 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)

标签: swifthexrgb

解决方案


这是生成 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要求您先播种它们。


推荐阅读