swift - 十六进制到二进制代码错误?
问题描述
所以,我正在尝试将任何十六进制值转换为二进制,但似乎我的代码不接受 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"
}
}
解决方案
我会将您的函数更改为此...(我还更改了一些变量名称,因为它们目前有点令人困惑)
@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"
}
}
检查输入不为零。
将输入转换为十六进制 Int。
如果上述任何一项失败,则显示“输入错误”。
- 将十六进制 int 转换为二进制。
然后显示二进制文件。
不推荐使用强制展开!
,因为如果值为nil
. 使用if let
(可选绑定)是一种检查它是否为 nil 并将值绑定到非可选变量的方法。
推荐阅读
- python - 尝试反转字符串列表会给出单个字符
- javascript - 如何在函数中传递参数并在调用函数时将该参数定义为变量?
- scala - 如何获取结构化流中的记录数?
- sql - 如何从扩展名应仅为 .jpg 的列中获取值?
- jenkins - Jenkins 没有在成功的 github webhook 上触发管道构建
- python - 想要拆分字符串
- node.js - Sequelize 使用同步时定义复数表
- python - 代码没有像我预期的那样运行,我想如果输入错误它会说错,如果输入正确它会说是
- c# - MassTransit:具有多个队列的单一直接交换
- javascript - Google Web App 和 Cookie 返回未定义