将十六进制颜色作为字符串转换为 Uint
Convert hex color as string to Uint
我已经搜索了很长时间,但找不到有效或我理解的解决方案。
我在数据库“0x6c8c93”中有一个字符串,我想将其转换为 Uint,以便将其转换为颜色。
下面是我之前用来将 Uint 转换为颜色的函数。我刚刚以这种格式 0x6c8c93 将颜色图表中的十六进制值传递给它。但是现在我需要从数据库中提取一些值,所以我必须使用字符串。
class func UIColorFromHEX(hexValue: UInt) -> UIColor {
return UIColor(
red: CGFloat((hexValue & 0xFF0000) >> 16) / 255.0,
green: CGFloat((hexValue & 0x00FF00) >> 8) / 255.0,
blue: CGFloat(hexValue & 0x0000FF) / 255.0,
alpha: CGFloat(1.0)
)
}
感谢您的帮助。
这是一种方法。使用 String(string.characters.suffix(6))
保留字符串的最后 6
个字符,然后使用 UInt
初始值设定项 UInt(_:radix:)
将 hexString 转换为 UInt
.
let string = "0x6c8c93"
if let hexValue = UInt(String(string.characters.suffix(6)), radix: 16) {
// create the color from hexValue
}
归功于 the second answer here,试试这个:
public func UIColorFromRGB(_ rgbValue: String) -> UIColor {
return UIColor(
red: CGFloat((rgbValue.hexaToInt & 0xFF0000) >> 16) / 255.0,
green: CGFloat((rgbValue.hexaToInt & 0x00FF00) >> 8) / 255.0,
blue: CGFloat(rgbValue.hexaToInt & 0x0000FF) / 255.0,
alpha: CGFloat(1.0)
)
}
extension String {
var hexaToInt : Int { return Int(strtoul(self, nil, 16)) }
var hexaToDouble : Double { return Double(strtoul(self, nil, 16)) }
var hexaToBinary : String { return String(hexaToInt, radix: 2) }
var decimalToHexa : String { return String(Int(self) ?? 0, radix: 16)}
var decimalToBinary: String { return String(Int(self) ?? 0, radix: 2) }
var binaryToInt : Int { return Int(strtoul(self, nil, 2)) }
var binaryToDouble : Double { return Double(strtoul(self, nil, 2)) }
var binaryToHexa : String { return String(binaryToInt, radix: 16) }
}
extension Int {
var binaryString: String { return String(self, radix: 2) }
var hexaString : String { return String(self, radix: 16) }
var doubleValue : Double { return Double(self) }
}
//"ff".hexaToInt // "255"
//"ff".hexaToDouble // "255.0"
//"ff".hexaToBinary // "11111111"
//"255".intToHexa // "ff"
//"255".intToBinary // "11111111"
//"11111111".binaryToInt // "255"
//"11111111".binaryToDouble // "255.0"
//"11111111".binaryToHexa // "ff"
//255.binaryString // "11111111"
//255.hexaString // "ff"
//255.doubleValue // 255.0
对我有用。
更新到 SwiftUI 和 Swift5
let string = "0x6c8c93"
let hexValue = UInt32(String(string.suffix(6)), radix: 16)
//This will return the UInt32 ready to be converted to a color
这是基于@vacawama 的回答
我已经搜索了很长时间,但找不到有效或我理解的解决方案。
我在数据库“0x6c8c93”中有一个字符串,我想将其转换为 Uint,以便将其转换为颜色。
下面是我之前用来将 Uint 转换为颜色的函数。我刚刚以这种格式 0x6c8c93 将颜色图表中的十六进制值传递给它。但是现在我需要从数据库中提取一些值,所以我必须使用字符串。
class func UIColorFromHEX(hexValue: UInt) -> UIColor {
return UIColor(
red: CGFloat((hexValue & 0xFF0000) >> 16) / 255.0,
green: CGFloat((hexValue & 0x00FF00) >> 8) / 255.0,
blue: CGFloat(hexValue & 0x0000FF) / 255.0,
alpha: CGFloat(1.0)
)
}
感谢您的帮助。
这是一种方法。使用 String(string.characters.suffix(6))
保留字符串的最后 6
个字符,然后使用 UInt
初始值设定项 UInt(_:radix:)
将 hexString 转换为 UInt
.
let string = "0x6c8c93"
if let hexValue = UInt(String(string.characters.suffix(6)), radix: 16) {
// create the color from hexValue
}
归功于 the second answer here,试试这个:
public func UIColorFromRGB(_ rgbValue: String) -> UIColor {
return UIColor(
red: CGFloat((rgbValue.hexaToInt & 0xFF0000) >> 16) / 255.0,
green: CGFloat((rgbValue.hexaToInt & 0x00FF00) >> 8) / 255.0,
blue: CGFloat(rgbValue.hexaToInt & 0x0000FF) / 255.0,
alpha: CGFloat(1.0)
)
}
extension String {
var hexaToInt : Int { return Int(strtoul(self, nil, 16)) }
var hexaToDouble : Double { return Double(strtoul(self, nil, 16)) }
var hexaToBinary : String { return String(hexaToInt, radix: 2) }
var decimalToHexa : String { return String(Int(self) ?? 0, radix: 16)}
var decimalToBinary: String { return String(Int(self) ?? 0, radix: 2) }
var binaryToInt : Int { return Int(strtoul(self, nil, 2)) }
var binaryToDouble : Double { return Double(strtoul(self, nil, 2)) }
var binaryToHexa : String { return String(binaryToInt, radix: 16) }
}
extension Int {
var binaryString: String { return String(self, radix: 2) }
var hexaString : String { return String(self, radix: 16) }
var doubleValue : Double { return Double(self) }
}
//"ff".hexaToInt // "255"
//"ff".hexaToDouble // "255.0"
//"ff".hexaToBinary // "11111111"
//"255".intToHexa // "ff"
//"255".intToBinary // "11111111"
//"11111111".binaryToInt // "255"
//"11111111".binaryToDouble // "255.0"
//"11111111".binaryToHexa // "ff"
//255.binaryString // "11111111"
//255.hexaString // "ff"
//255.doubleValue // 255.0
对我有用。
更新到 SwiftUI 和 Swift5
let string = "0x6c8c93"
let hexValue = UInt32(String(string.suffix(6)), radix: 16)
//This will return the UInt32 ready to be converted to a color
这是基于@vacawama 的回答