3 votes

comment puis-je modifier et inverser chaque bit de NSData en utilisant le langage swift ?

Comment puis-je modifier et inverser chaque bit de NSData en utilisant le langage swift ? je veux faire quelque chose comme une confusion de code.

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

alors s'il vous plaît dites-moi comment modifier les données dans NSData ? donnez-moi quelques conseils sur le codage merci.

1voto

OOPer Points 33473

NSData est un type immuable, vous ne pouvez donc pas modifier son contenu.

Deux alternatives.

(1) Créer un nouveau NSData avec un contenu modifié.

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) Créer une copie mutable et modifier le contenu de celle-ci.

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`

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X