【问题标题】:How to get length of a CString (UTF8String)in Swift?如何在 Swift 中获取 CString (UTF8String) 的长度?
【发布时间】:2015-06-03 22:40:40
【问题描述】:

我有一个 CString

let parameterCString = (parameter as NSString).UTF8String

现在我想找到我想使用的 parameterCString 的长度

let UTF8parameter  = NSData(bytes: parameterCString, length: )

这也是一样的意思

let UTF8parameter:NSData = parameter.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!

【问题讨论】:

    标签: swift c-strings string-length


    【解决方案1】:

    您可以使用 strlen() 函数。

    let aString:String = "myString"
    let aCString = aString.cStringUsingEncoding(NSUTF8StringEncoding)
    let length = strlen(aCString)// returns a UInt
    let UTF8parameter = NSData(bytes: aCString, length: length)
    

    【讨论】:

      【解决方案2】:

      如果你想要的是UTF8,最简单的方法是

      let param = "my Swïft stríng"
      let utf8Bytes = [UInt8](param.utf8)
      let utf8Length = utf8Bytes.count // 17
      let utf8Data = NSData(bytes: utf8Bytes, length: utf8Length)
      

      如果你想要一个空字节结束

      let nullTerminatedBytes = utf8Bytes + [0]
      let nullTerminatedLength = nullTerminatedBytes.count // 18
      let nullTerminatedData = NSData(bytes: nullTerminatedBytes, length: nullTerminatedLength)
      

      【讨论】:

        猜你喜欢
        • 2021-03-10
        • 1970-01-01
        • 2010-09-15
        • 2019-06-30
        • 1970-01-01
        • 1970-01-01
        • 2016-07-30
        • 2010-11-15
        • 2014-05-03
        相关资源
        最近更新 更多