从Swift字符串转换为const char *

史蒂文·B

我试图将const char *传递给从Swift中的Swift字符串转换而来的旧C库。

这是我正在调用的C函数:

artnet_node artnet_new(const char *ip, int verbose) { ...

如何将Swift字符串转换为此const char类型?当我这样传递ipAddress时,它可以工作:

internal var ipAddress = "192.168.1.43"

但是当我这样通过时dit不起作用

internal var ipAddress:String = "192.168.1.43"

我在需要指定类型的函数中需要它:

internal func setupArtnode(ip:String) -> Int{

我尝试使用AnyObject而不是String,但这也不起作用。

谢谢。

史蒂文·B

不知道为什么,但是此代码有效。这会将字符串传递给C函数,该函数期望使用const char *,该字符似乎与unsafePointer相同。

internal func setupArtnode(ipAddress:String) -> NSInteger{
    let cString = self.ipAddress.cString(using: String.defaultCStringEncoding)!
    let newString:String = NSString(bytes: cString, length: Int(ipAddress.characters.count), encoding:String.Encoding.ascii.rawValue)! as String
    let key2Pointer = UnsafePointer<Int8>(newString)

    node = artnet_new(key2Pointer, Int32(verbose))     // VERBOSE : true(1) , false(0)
...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章