【问题标题】:NSData to Swift IntegerNSData 到 Swift 整数
【发布时间】:2014-07-14 08:32:50
【问题描述】:

我有一个 NSMutableData,我用它的方法制作子数据,以获取我将创建的整数的确切字节。但不知何故,我无法将该字节转换为整数。调试时似乎没问题,我看到子数据值为“”-我需要转换-。

    var lengthData:NSData = buffer.subdataWithRange(NSMakeRange(12,4))
    var length:Int = //Conversion which must be done from lengthData
    var dataPart:NSData = buffer.subdataWithRange(NSMakeRange(16, length))

我尝试将 lengthData 转换为 NSString 并获取它的整数值,但没有成功。你能帮忙解决一下这个转换吗?提前致谢。

【问题讨论】:

    标签: integer swift nsdata


    【解决方案1】:

    您只需将其指针传递给.getBytes(...) 函数即可将所需数量的字节读入原始类型变量:

    var length: Int = 0
    data.getBytes(&length, range: NSRange(location: 12, length: 4))
    

    【讨论】:

    • 这就是方式,尽管使用 NSRange(location: 12, length: 4) 而不是旧的 NSMakeRange 函数稍微“Swifty”。
    【解决方案2】:

    我找到了一种转换方法,但不是直接转换。首先我创建一个长度为 1 的数组(我知道它将是数组中的 1 个元素),然后我将 NSData 值复制到该数组中,然后取第一个元素。就像:

        var lengthData:NSData = buffer.subdataWithRange(NSMakeRange(12,4))
        var array = Int[](count: 1, repeatedValue: 1)
        lengthData.getBytes(&array, length:1)
        var length:Int = array[0]
    

    这对我有帮助,但任何直接转化也将不胜感激。

    【讨论】:

      猜你喜欢
      • 2014-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多