私はlibxml2とswiftでインターフェイスしており、C APIバインディング(まだ)はC文字列に対してUnsafePointer<Int8>!
を生成します。スウィフトAPIは通常、UnsafePointer<UInt8>!
になります。Swift3:文字列をヌル終端のC文字列に変換する適切な方法
私の質問は - 正しい方法でヌル終端のC文字列に文字列をしていますか?
let cfilePath = unsafeBitCast(myStringString.nulTerminatedUTF8.withUnsafeBufferPointer { $0.baseAddress }, to: UnsafePointer<Int8>.self)
は私の代わりにだけでなくInt8
バイトとしてUInt8
バイトを解釈しスウィフト型チェックをバイパスする他のいくつかの方法を使用して好むべきでしょうか?
これは私が推測する良い方法ではありません。 UIntは範囲0〜255の間にInt8(bitPattern:$ 0)は127を超える数のランタイム例外を生成します。 – ambientlight
@ambientlight更新を参照してください.... – user3441734
私は正しく、init(bitPattern:)は生成しません例外、私はInt8(_ value :)と混同しました... – ambientlight