我正在寻找一个帮助类,它可以修改字节数组中的特定位,其 API 类似于以下内容:
void Set(int startPos, int lengthInBits, int value) {
// Set the bits starting at startPos to the binary representation of value
// Error if the binary representation of value is too long (ie. exceeds lengthInBits)
}
目的是能够将任意长度的特定值放入一个字节数组中——一些值的长度小于一个字节,另一些则更多,还有一些会“跨越”字节。
我看过ByteBuffer但这似乎有点太高级了,只能处理整个字节,并将 int 和 short 转换为多个字节,而不是让你选择它们的最大位数。
我还查看了BitSet,但这次它似乎有点太低级了,因为它只能在单个位级别上工作(尽管我可能会使用它作为使用上述 API 构建某些东西的起点)。
在 Stack Overflow 上还有一个类似的老问题,主要与有符号/无符号位的使用有关,但图中的数据结构是我试图构建的那种东西(发送给外部客户端的消息),并且我想尽可能多地隐藏位移复杂性。