我正在尝试使用CircularBuffer<UInt8>
SwiftNIO 来存储数据,一旦缓冲区几乎满了,就使用OutputStream
. 不幸的是,该OutputStream.write()
方法需要UnsafePointer
作为参数,而CircularBuffer
可以输出UnsafeBufferPointer
. 有没有办法转换CircularBuffer
成UnsafePointer
?
我尝试使用以下代码扩展 CircularBuffer,我成功使用该代码将结构转换为字节数组,因为有人建议 CircularBuffer 实际上是一个结构,但我的输出文件中出现垃圾:
extension CircularBuffer {
func toBytes() -> [UInt8] {
let capacity = MemoryLayout<Self>.size
var mutableValue = self
return withUnsafePointer(to: &mutableValue) {
return $0.withMemoryRebound(to: UInt8.self, capacity: capacity) {
return Array(UnsafeBufferPointer(start: $0, count: capacity))
}
}
}
}
有什么想法吗?