我在swift中与libxml2进行交互,并且C API绑定(仍然)为c字符串生成UnsafePointer<Int8>!
。 Swift API通常会导致UnsafePointer<UInt8>!
。Swift3:将字符串转换为以空字符结尾的C字符串的正确方法
所以我的问题是 - 我正在以正确的方式做字符串以空终止的C字符串?
let cfilePath = unsafeBitCast(myStringString.nulTerminatedUTF8.withUnsafeBufferPointer { $0.baseAddress }, to: UnsafePointer<Int8>.self)
如果我反而更喜欢使用其他一些方法,而不是仅仅绕过雨燕与解释UInt8
字节Int8
字节检查?
这不是我猜的好方法。 Int8(bitPattern:$ 0)将产生127以上的数字的运行时异常,而UInt的范围为0 ... 255 – ambientlight
@ambientlight请参阅更新.... – user3441734
请原谅,你是对的,init(bitPattern:)不会产生例外,我把它与Int8(_值:)混淆...... – ambientlight