Swift-RoringBitmap-序列化为base64

Swift-RoringBitmap-序列化为base64,swift,bitmap,base64,Swift,Bitmap,Base64,我正在尝试将以轰鸣位图格式生成的bloom过滤器序列化为base64字符串,以便将其保存在MongoDB中。但是函数portableSerialize对我来说有点棘手 到目前为止,我只是测试它是如何工作的,我生成了一个随机的bloom过滤器值,稍后我会尝试将其转换为buffer->to data->to base64: func generateBloomFilterData(){ let bitmap = RoaringBitmap() for i in 0..<50 {

我正在尝试将以轰鸣位图格式生成的bloom过滤器序列化为base64字符串,以便将其保存在MongoDB中。但是函数portableSerialize对我来说有点棘手

到目前为止,我只是测试它是如何工作的,我生成了一个随机的bloom过滤器值,稍后我会尝试将其转换为buffer->to data->to base64:

func generateBloomFilterData(){
    let bitmap = RoaringBitmap()
    for i in 0..<50 { 
        let random = arc4random_uniform(2)
        if random == 0 {
            bitmap.add(UInt32(i))
        } 
    }  
    let count = (Int(bitmap.count) * MemoryLayout<Int8>.size)
    var buffer = [Int8](repeating: 0, count: count)
    _ = bitmap.portableSerialize(buffer: &buffer)
    let uintBuffer = buffer.map { UInt8(bitPattern: $0) }
    let bufferData = Data(uintBuffer)
    let base64String = bufferData()
    print("buffer size: \(buffer.count), \(uintBuffer.count), base64: \(bufferData.base64EncodedString())")
    //-> send base64 string to database
}
func generateBloomFilterData(){
让位图=RoringBitmap()
对于0中的i..将base64字符串发送到数据库
}
这将生成一个错误:

malloc:MallocStackLogging:尝试从中释放索引 界限

控制台显示:

缓冲区大小:20,20,base64:Ojaaaaaaaaaaaaaaaaamababqa=

是否有一种方法可以简单地从上面生成的RoaringBitmap()生成base64字符串?

根据Daniel的帮助,似乎我对大小使用了错误的参数。正确的语法如下所示:

let size = rbm.portableSizeInBytes()
var buffer = [Int8](repeating: 0, count: size)
_ =  rbm.portableSerialize(buffer: &buffer)
let uint8Buffer = buffer.map { UInt8(bitPattern: $0) }
let base64Encoded = Data(uint8Buffer).base64EncodedString()

什么是轰鸣位图?这是某种第三方框架吗?你能提供相关信息的链接吗?你应该编辑你的问题来提供这些信息。不要让本帖的未来读者通过评论进行“拾荒者搜寻”,以了解你在说什么。(我正在使用第三部分库“RoaringBitmap”(链接),它允许我
。我希望能够从
RoaringBitmap
导出数据,并将其转换为base64编码的数据,这样我就可以