将 UInt64 数组转换为 BitVector

Convert an array of UInt64 into a BitVector

我最近发现我可以使用 chunks 得到 UInt64BitVector 的 'backing array'。但是,我想走相反的路——给定一个 UInt64 的一维数组,使用某个函数 foo 构造一个 BitVector 使得

foo(x.chunks) == x

有这样的功能吗?

this 这样的东西行得通吗?

function foo(v::Vector{UInt64})
    siz = sizeof(v)
    bv = falses(siz << 6)
    unsafe_copy!(reinterpret(Ptr{UInt64}, pointer(bv.chunks)), pointer(v), siz)
    bv
end

如果需要,它们还提供重载来设置结果 BitVector 中的位数。