binary-strict-0.4.5: Binary deserialisation using strict ByteStringsSource codeContentsIndex
MaintainerAdam Langley <>
Get BitGet type
Generic parsing
Interpreting some number of bits as an integer
Parsing particular types

This is a reader monad for parsing bit-aligned data. The usual Get monad handles byte aligned data well.

In this monad, the current offset into the input is a number of bits, and fetching n bits from the current position will shift everything correctly. Bit vectors are represented as ByteStrings here either the first n bits are valid (left aligned) or the last n bits are (right aligned).

If one is looking to parse integers etc, right alignment is the easist to work with, however left alignment makes more sense in some situations.

data BitGet a
runBitGet :: ByteString -> BitGet a -> Either String a
skip :: Int -> BitGet ()
remaining :: BitGet Int
isEmpty :: BitGet Bool
getBit :: BitGet Bool
getLeftByteString :: Int -> BitGet ByteString
getRightByteString :: Int -> BitGet ByteString
getAsWord8 :: Int -> BitGet Word8
getAsWord16 :: Int -> BitGet Word16
getAsWord32 :: Int -> BitGet Word32
getAsWord64 :: Int -> BitGet Word64
getWord8 :: BitGet Word8
getWord16le :: BitGet Word16
getWord16be :: BitGet Word16
getWord16host :: BitGet Word16
getWord32le :: BitGet Word32
getWord32be :: BitGet Word32
getWord32host :: BitGet Word32
getWord64le :: BitGet Word64
getWord64be :: BitGet Word64
getWord64host :: BitGet Word64
getWordhost :: BitGet Word
Get BitGet type
data BitGet a Source
show/hide Instances
runBitGet :: ByteString -> BitGet a -> Either String aSource
Run a BitGet on a ByteString
skip :: Int -> BitGet ()Source
Skip n bits of the input. Fails if less then n bits remain
remaining :: BitGet IntSource
Return the number of bits remaining to be parsed
isEmpty :: BitGet BoolSource
Return true if there are no more bits to parse
Generic parsing
getBit :: BitGet BoolSource
Get a single bit from the input
getLeftByteString :: Int -> BitGet ByteStringSource
Get a ByteString with the given number of bits, left aligned.
getRightByteString :: Int -> BitGet ByteStringSource
Get a ByteString with the given number of bits in, right aligned.
Interpreting some number of bits as an integer
getAsWord8 :: Int -> BitGet Word8Source
getAsWord16 :: Int -> BitGet Word16Source
Read a Word16 in big endian format
getAsWord32 :: Int -> BitGet Word32Source
Read a Word32 in big endian format
getAsWord64 :: Int -> BitGet Word64Source
Read a Word64 in big endian format
Parsing particular types
getWord8 :: BitGet Word8Source
getWord16le :: BitGet Word16Source
getWord16be :: BitGet Word16Source
getWord16host :: BitGet Word16Source
getWord32le :: BitGet Word32Source
getWord32be :: BitGet Word32Source
getWord32host :: BitGet Word32Source
getWord64le :: BitGet Word64Source
getWord64be :: BitGet Word64Source
getWord64host :: BitGet Word64Source
getWordhost :: BitGet WordSource
Produced by Haddock version 2.4.2