ByteString上的按位操作

时间:2016-09-19 07:12:47

标签: haskell bit-manipulation bytestring

在Haskell中,似乎通过OS X El Capitan: Start up in safe mode和Bits类来处理逐位操作。

我想对任何长度的ByteStrings执行位操作(例如set,clear,shift,mask ...)但是我无法在任何地方找到ByteStrings的Bits实例。

我的问题:我应该自己实施该实例(可能是一个很好的练习)?如果有的话,是否有任何建议可以获得一些可接受的表现"?或者尝试直接在ByteStrings上进行位操作是一个坏主意,在这种情况下,什么是更好的方法?

2 个答案:

答案 0 :(得分:1)

我无法理解为什么这是一个坏主意。如果你想成为超级将军,你可以实施

instance (Listlike l a, Bits a) => Bits (l a) where ...

这将为您提供任何list-like类型的比特实现,该实施适用于include Bytestrings

答案 1 :(得分:0)

我发现Hackage上的bits-bytestring包提供了你所要求的内容。

但是我会对一些操作小心,如果不是所有的字节串都长度相同。特别是,哪些位由complement设置取决于字节串的长度。