NSData
は不変型なので、内容を変更することはできません。
2つの選択肢。
(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`
あなたの入力が "hello、world"の場合、期待される出力は何ですか? –
私はnsdataのすべてのバイトを探索し、バイナリコードをバイト単位で反転してから、次の操作のためにnsdataに書き戻します。 – baileymiller2017
正確な出力を探しています。 1つは、逆の言葉をいくつかの方法で取ることができます。 'A'(0b01000001)の逆数は0b10000010ですか、それとも0b10111110ですか? –