我如何使用 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`
如何使用 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`