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