2

我有一个长度为 64 的字节数组。我有这个字节数组中的数据对应的顺序列表。这个列表告诉我每个值的大小(以位为单位)。大多数值是 8 位或 16 位,这很容易解析出来。但是,大约在列表的中途,我开始获得 12 位或 5 位的长度。遍历这些并取出我需要的位的最佳方法是什么。

4

1 回答 1

1

以下代码应从存储uint[]. 我还没有测试过,所以请注意讲师

uint GetBits(uint[] data, ref uint pos, uint n) {
    uint a = pos/32;
    uint off = pos%32;
    uint mask = (1 << n) - 1;
    pos += n;
    return (data[a] << off)&mask | (data[a + 1] >> (32 - off))&mask;
}

请注意,它假定小端存储,因此未对齐的值从一个字的高位流到下一个字的低位。

于 2012-04-08T04:19:54.943 回答