Swift String to unsigned char [](CUnsignedChar)

时间:2015-02-18 21:45:02

标签: ios c swift

您好我试图使用旧的遗留C库,它使用缓冲区(unsigned char [])来转换数据。这里的主要问题是我找不到将String转换为CUnsignedChar的方法,然后能够将该缓冲区分配给UnsafeMutablePointer

2 个答案:

答案 0 :(得分:2)

如果要将Swift字符串转换为不可变的C字符串以传递给C函数,请尝试:

let s: String = "hello, world!"
s.nulTerminatedUTF8.withUnsafeBufferPointer { p -> Void in
    puts(UnsafePointer<Int8>(p.baseAddress))
    Void()
}

如果您的功能需要UnsafePointer<UInt8>,则可能需要使用unsigned char *

答案 1 :(得分:0)

我首先将String转换为NSData,然后将NSData转换为CUnsignedChar数组

if let data = str.dataUsingEncoding(NSUTF8StringEncoding){
        var rawData = [CUnsignedChar](count: data.length,repeatedValue: 0)
        data.getBytes(&rawData, length: data.length)

}