这个问题的许多版本都发布了。我的问题略有不同,因为我得到了相互矛盾的结果。
如果我在操场上跑步,效果很好:
let myNumber = 12345
if let myHex = Double(String(myNumber, radix: 16)) {
print(myHex)
} else {
print("Bad input as hexadecimal: (myNumber)")
}
返回3039。
但是,如果我将myNumber更改为1234,则会收到Bad Input消息。有人能看出我做错了什么吗,或者给我一个类似的问题吗?(我看过(
您正在获取一个数字1234
,并将其转换为字符串(例如4d2
(。然后,您要求Double
尝试解释字母数字十六进制字符串,但它显然无法做到这一点
如果你想要十六进制字符串表示,它很简单:
let myNumber = 1234
let myHex = String(myNumber, radix: 16)
print(myHex)
您的值12345
产生了一个十六进制字符串,该字符串恰好不包含任何a
-f
字符(它是3039
(,因此Double
转换没有失败。(但它也没有返回正确的值。(