私はスウィフトにAES 128を実装しようと、最近CChar
配列にスウィフト文字列を書き込むことで問題に遭遇しています:32ビットデバイスでは挙動
let testString = "myTestString"
var keyPtr = [CChar](count: kCCKeySizeAES128 + 1, repeatedValue: 0)
bzero(&keyPtr, strideof(keyPtr.dynamicType))
testString.getCString(&keyPtr, maxLength: strideof(keyPtr.dynamicType), encoding: NSUTF8StringEncoding)
print(keyPtr)
(アプリ2は、アプリ4)これは、ログに記録:
[109, 121, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
64ビットデバイス(iPhone 6、MacBook ProのI7)このログにしばらく:
[109, 121, 84, 101, 115, 116, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
64ビットの場合は正しい結果が得られますが、32ビットの結果は正しくありません。
私もwithCString
と同じ問題に遭遇:32ビットデバイスで
testString.withCString({
print($0)
})
これは、64ビットデバイスのログ0x00007f853c123760
ながら0x7a992094
を記録します。
すべてのアーキテクチャでgetCString
またはwithCString
の結果を同じにするにはどうすればよいですか?これは、サイズがCChar
であるか、または異なるアーキテクチャのアレイで問題になっていますか?
うんです。そして、 'withCString'は私がメモリ上の内容ではなくメモリの場所を印刷していたので私を捨てました。再度、感謝します。 – JAL