swift - Swift 中的 NSData 到 [Uint8]

标签 swift nsdata

我无法在 Swift 中找到这个问题的解决方案(它们都是 Objective-C,并且它们处理我认为在 Swift 中不存在的相同形式的指针)。有什么方法可以将 NSData 对象转换为 Swift 中 [Uint8] 形式的字节数组吗?

最佳答案

如果您以稍微复杂的方式遍历指针,或者通过 Swift 3 中引入的新 Array 构造函数,则可以避免首先将数组初始化为占位符值:

swift 3

let data = "foo".data(using: .utf8)!

// new constructor:
let array = [UInt8](data)

// …or old style through pointers:
let array = data.withUnsafeBytes {
    [UInt8](UnsafeBufferPointer(start: $0, count: data.count))
}

swift 2

Array(UnsafeBufferPointer(start: UnsafePointer<UInt8>(data.bytes), count: data.length))

关于swift - Swift 中的 NSData 到 [Uint8],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31821709/

相关文章:

iphone - 将 NSString 转换为 NSData,反之亦然

ios - NSString的initWithData和initWithBytes之间的区别

objective-c - 使用 NSTask : app freezing after returning output

ios - 如何使用 Selector 和 NotificationCenter 调用可选函数

ios - 从 UIWebView 获取加载的图片

ios - 水平条形图 : how to add X-Bar Axis Labels

ios - 以更少的步骤从原始数据到 UIImagePNGRepresentation

ios - 获取从 iPhone 获取的 Gif 图像的 NSData 时无法获取 Gif 图像帧数

ios - 如何将两个 gestureRecognizers 保持在一个 View 中并在它们之间切换?

swift - bannerViewDidLoadAd 未被调用