Swift 5中将十进制转换为十六进制的混乱



这个问题的许多版本都发布了。我的问题略有不同,因为我得到了相互矛盾的结果。

如果我在操场上跑步,效果很好:

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转换没有失败。(但它也没有返回正确的值。(

最新更新