如何获得指向数字变量的指针?例如。转换得到 UnsafePointer<UInt8>
指向包含 Swift Int
的存储.我需要写 Int
到一个流。
我的例子:
public static func writeToOutputStream(text: String!, outputStream:NSOutputStream!){
let encodedDataArray = [UInt8](text.utf8)
//send length of the data so the server knows when the message ends.
outputStream.write(encodedDataArray.count, maxLength: 4)
outputStream.write(encodedDataArray, maxLength: encodedDataArray.count)
}
我需要 encodedDataArray.count
成为UnsafePointer<UInt8>
如果我也想发送数据长度。
最佳答案
使用withUnsafePointer
,像这样:
let outputStream = NSOutputStream(toMemory: ())
outputStream.open()
var count: Int = 0x01020304 // = encodedDataArray.count in your program
withUnsafePointer(&count) { (pointer: UnsafePointer<Int>) -> Void in
outputStream.write(UnsafePointer<UInt8>(pointer), maxLength: 4)
}
outputStream.propertyForKey(NSStreamDataWrittenToMemoryStreamKey)
结果:
<04030201>
请注意,它将以小端顺序写入字节(因为 Swift 当前运行的所有平台都是小端)。如果您想以大端方式写入,请使用 encodedDataArray.count.bigEndian
。
关于ios - 将 UnsafePointer<UInt8> 获取到 Int 以将编码的 Int 写入流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33663360/