hw-eliasfano-0.1.2.1: app/App/Codec.hs
module App.Codec
( decodeWord32s
) where
import Data.Word
import qualified Data.Binary.Get as G
import qualified Data.ByteString.Lazy as LBS
decodeWord32s :: LBS.ByteString -> [Word32]
decodeWord32s = fmap (G.runGet G.getWord32le) . go
where go :: LBS.ByteString -> [LBS.ByteString]
go lbs = case LBS.splitAt 4 lbs of
(lt, rt) -> if LBS.length lt == 4
then lt:go rt
else [LBS.take 4 (lt <> LBS.replicate 4 0) | LBS.length lt /= 0]