Swift4.0 strtoul、strtod、strtof、strtol等字符串函数的改变

来源:互联网 发布:php从入门到精通 光盘 编辑:程序博客网 时间:2024/06/10 02:40

在新的iOS 11的SDK中,这几个函数参数类型发生了改变,

public func strtod(_: UnsafePointer<Int8>!, _: UnsafeMutablePointer<UnsafeMutablePointer<Int8>?>!) -> Doublepublic func strtof(_: UnsafePointer<Int8>!, _: UnsafeMutablePointer<UnsafeMutablePointer<Int8>?>!) -> Floatpublic func strtol(_ __str: UnsafePointer<Int8>!, _ __endptr: UnsafeMutablePointer<UnsafeMutablePointer<Int8>?>!, _ __base: Int32) -> Intpublic func strtoll(_ __str: UnsafePointer<Int8>!, _ __endptr: UnsafeMutablePointer<UnsafeMutablePointer<Int8>?>!, _ __base: Int32) -> Int64/* !__DARWIN_NO_LONG_LONG */public func strtoul(_ __str: UnsafePointer<Int8>!, _ __endptr: UnsafeMutablePointer<UnsafeMutablePointer<Int8>?>!, _ __base: Int32) -> UIntpublic func strtoull(_ __str: UnsafePointer<Int8>!, _ __endptr: UnsafeMutablePointer<UnsafeMutablePointer<Int8>?>!, _ __base: Int32) -> UInt64

从原来可以直接传的char*变成了一个UnsafePointer<Int8>。那么我们用到函数的地方也要改变一下,具体代码如下:

let s = hex[hex.characters.index(hex.startIndex, offsetBy: start)..<hex.characters.index(hex.startIndex, offsetBy: end)]return CGFloat(s.withCString{strtoul($0, nil, 16)})

这里的s是一个String类型,他有一个withCString方法。利用这个方法可以将字符串中的字符转换成UnsafePointer<Int8>类型

阅读全文
1 0
原创粉丝点击