对于任何(至少整数)数字,是否有任何本机Swift方法可以在字符串中获取其十六进制表示形式?和逆.它不能使用Foundation.例如,String类有一个函数
func toInt() -> Int?
Run Code Online (Sandbox Code Playgroud)
它将表示整数的字符串转换为其Int值.我正在寻找类似的东西,使用十六进制字符串.我知道这很容易实现,但如果Swift有它,那就已经好了.否则,如果您已经使用String和Int的扩展来实现以下目的:
let anHex = "0xA0"
if let anInt = anHex.toInt() {
println(anInt) // prints 128
println(anInt.toHexString()) // prints "0xA0"
}
Run Code Online (Sandbox Code Playgroud)
我知道这不是火箭科学,但万一请分享.
PS:这与这个问题类似,不同之处在于它与Foundation框架非常相关,而我没有在我的代码中使用它(我也没有导入任何其他内容)而且现在我想保留它这样,也是为了学习目的.
我正在寻找一种直接的方法来将Int的位值转换为UInt,反之亦然.例如(为简单起见,使用8位整数)我想实现以下目的:
let unsigned: UInt8 = toUInt8(-1) // unsigned is 255 or 0xff
let signed: Int8 = toInt8(0xff) // signed is -1
Run Code Online (Sandbox Code Playgroud)
起初我提出了以下解决方案:
let unsigned = unsafeBitCast(Int8(-1), UInt8.self)
let signed = unsafeBitCast(UInt8(0xff), Int8.self)
Run Code Online (Sandbox Code Playgroud)
但Apple在"unsafeBitCast()"文档中声明如下:
..警告::打破Swift类型系统的保证; 小心使用.几乎总有一种更好的方法可以做任何事情.
有没有人有更好的方法?