首页 > 解决方案 > 十六进制到二进制代码错误?

问题描述

所以,我正在尝试将任何十六进制值转换为二进制,但似乎我的代码不接受 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"

    }
}

标签: swift

解决方案


我会将您的函数更改为此...(我还更改了一些变量名称,因为它们目前有点令人困惑)

@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"
    }
}
  1. 检查输入不为零。

  2. 将输入转换为十六进制 Int。

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

  1. 将十六进制 int 转换为二进制。

然后显示二进制文件。

不推荐使用强制展开!,因为如果值为nil. 使用if let(可选绑定)是一种检查它是否为 nil 并将值绑定到非可选变量的方法。


推荐阅读