Ошибка в шестнадцатеричном коде? - PullRequest
0 голосов
/ 28 августа 2018

Итак, я пытаюсь выполнить преобразование любого шестнадцатеричного значения в двоичное, но, похоже, мой код не принимает 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"

    }
}

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Я бы изменил вашу функцию на это ... (Я также изменил некоторые имена переменных, так как они в настоящее время немного сбивают с толку)

@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, и вместо этого связать значение с необязательной переменной.

0 голосов
/ 28 августа 2018

Первое, что вы проверяете

if Int(input.text!) != nil

- чтобы увидеть, является ли введенный текст действительным целым числом - и это не так, если он включает 2f

Вместо проверки действительного целого числа, вы должны проверить действительный шестнадцатеричный

if Int(input.text!,radix:16) != nil
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...