栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Swift本机函数将数字作为十六进制字符串

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Swift本机函数将数字作为十六进制字符串

Swift 2开始, 所有整数类型都有一个构造函数

init?(_ text: String, radix: Int = default)

这样就可以使用内置方法完成整数到十六进制字符串和十六进制字符串到整数的转换。例:

let num = 1000let str = String(num, radix: 16)print(str) // "3e8"if let num2 = Int(str, radix: 16) {    print(num2) // 1000}

(Swift 1的旧答案) 可以使用以下方法完成从整数到十六进制字符串的转换

let hex = String(num, radix: 16)

(例如,参见如何在Swift中将十进制数转换为二进制?)。这不需要导入任何framework,并且可以使用2到36之间的任何基数。

如果愿意,可以使用BSD库函数

strtoul()
(比较如何在Swift中将二进制转换为十进制?)来完成从十六进制字符串到整数的转换
import Darwin

否则,据我所知,没有内置的Swift方法。这是一个扩展,可以根据给定的基数将字符串转换为数字:

extension UInt {    init?(_ string: String, radix: UInt) {        let digits = "0123456789abcdefghijklmnopqrstuvwxyz"        var result = UInt(0)        for digit in string.lowercaseString { if let range = digits.rangeOfString(String(digit)) {     let val = UInt(distance(digits.startIndex, range.startIndex))     if val >= radix {         return nil     }     result = result * radix + val } else {     return nil }        }        self = result    }}

例:

let hexString = "A0"if let num = UInt(hexString, radix: 16) {    println(num)} else {    println("invalid input")}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/378882.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号