Swift 十六进制到二进制代码错误?

Swift 十六进制到二进制代码错误?,swift,Swift,所以,我试图用十六进制的任意值转换成二进制,但我的代码似乎不接受2f等。我做错了什么 @IBOutlet weak var input: UITextField! @IBOutlet weak var mylabel: UILabel! override func viewDidLoad() { super.viewDidLoad() } override func didReceiveMemoryWarning() { super.didReceiveMemoryW

所以,我试图用十六进制的任意值转换成二进制,但我的代码似乎不接受2f等。我做错了什么

@IBOutlet weak var input: UITextField!

@IBOutlet weak var mylabel: UILabel!

override func viewDidLoad() {

    super.viewDidLoad()

}

override func didReceiveMemoryWarning() {

    super.didReceiveMemoryWarning()
}

@IBAction func getresults(_ sender: Any) {
    if Int(input.text!,radix:16) != nil
        let hex = String(Int(input.text!,radix:16)!, radix:2)
        mylabel.text = "The Hexadecimal of \(input.text!) conversion is:  \(hex)"
    }else{
        mylabel.text = "Wrong input"

    }
}

你检查的第一件事

if Int(input.text!) != nil
检查输入文本是否是有效的整数,而不是它是否包含2f

您应该检查有效的十六进制,而不是检查有效的整数

if Int(input.text!,radix:16) != nil

我会把你的函数改成这个。。。(我还更改了一些变量名,因为它们目前有点混乱)

  • 检查输入是否为非零

  • 将输入转换为十六进制整数

  • 如果上述任何一项失败,则显示“输入错误”

  • 将十六进制整数转换为二进制
  • 然后显示二进制文件


    使用强制展开
    ,因为如果该值为
    nil
    ,它将使应用程序崩溃。使用
    if let
    (可选绑定)是一种检查它是否为nil并将值绑定到一个非可选变量的方法。

    检查
    nil
    是否将要使用该值是非常不简单的。谢谢,这对我帮助很大。我确实不太使用nil,但我想我只是把自己弄糊涂了@vadian@Dev1234福格迈斯特的答案是推荐的和最有效的处理选项的方法。你的权利谢谢你的提示,我很感激@瓦迪安:谢谢这对我帮助很大。@Dev1234不用担心,很乐意帮忙。一定要接受正确的答案。这表明这个问题已经为未来的用户解决了,并且还给了回答:D的人,欢迎使用StackOverflow:D
    @IBAction func getresults(_ sender: Any) {
        if let inputText = input.text, // 1
           let inputHex = Int(inputText, radix: 16) { // 2
    
            let binary = String(inputHex, radix: 2) // 3
            mylabel.text = "The Hexadecimal of \(inputText) conversion is:  \(binary)"
        }else{
            mylabel.text = "Wrong input"
        }
    }