我如何使用 swift 语言修改和反转 NSData 中的每一位?

how can i modify and reverse every bit in NSData using swift language ?

如何使用 swift 语言修改和反转 NSData 中的每一位?我想做一些类似代码混淆的东西。

//.....
let tempstring : String = "hello world!" 
let tempnsstring : NSString = tempstring as NSString 
var tempnsdata : NSData! 
tempnsdata = tempnsstring.dataUsingEncoding(encoding) 
//.... 

那么..请告诉我如何修改 NSData 中的数据?给我一些编码提示。谢谢

NSData 是不可变类型,因此您无法修改其内容。

两种选择。

(1) 创建一个新的 NSData 并修改内容。

let tempstring = "hello world!"
let encoding = NSUTF8StringEncoding
let tempnsdata = tempstring.dataUsingEncoding(encoding)!

var tempbytes: [UInt8] = Array(count: tempnsdata.length, repeatedValue: 0)

tempnsdata.getBytes(&tempbytes, length: tempbytes.count)

for i in tempbytes.indices {
    tempbytes[i] = ~tempbytes[i]
}

let modifiednsdata = NSData(bytes: tempbytes, length: tempbytes.count)
//Use `modifiednsdata`...

(2) 创建可变副本并修改其中的内容。

let tempstring = "hello world!"
let encoding = NSUTF8StringEncoding
let tempnsdata = tempstring.dataUsingEncoding(encoding)!

let tempnsmutabledata = tempnsdata.mutableCopy() as! NSMutableData

let mutabledataptr = UnsafeMutablePointer<UInt8>(tempnsmutabledata.mutableBytes)

for i in 0..<tempnsmutabledata.length {
    mutabledataptr[i] = ~mutabledataptr[i]
}

//Use `tempnsmutabledata` as `NSData`