code de test minimal (bs.hs):Comment générer un binaire minimal en utilisant Data.Binary et Data.ByteString.Lazy?
import qualified Data.Binary as B
import qualified Data.ByteString.Lazy.Char8 as BSLC
main = do
BSLC.putStr $ B.encode $ Pad $ BSLC.pack "xxx"
data Pad = Pad BSLC.ByteString
instance B.Binary Pad where
put (Pad p) = do
B.put p
get = do
p <- B.get
return $ Pad p
Et je reçois:
% runghc bs.hs | od -c
0000000 \0 \0 \0 \0 \0 \0 \0 003 x x x
0000013
% ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.10.2
je me attends à obtenir "xxx". Je n'ai aucune idée de comment viennent les 8 premiers octets (7 x \ 0 + 1 x 003).
La longueur du ByteString est un nombre de 64 bits (8 octets). Si vous voulez un format spécifique pour votre sortie, vous ne devriez pas utiliser la classe binaire. –
Après avoir relu la documentation, cela a du sens. J'ai commencé à regarder Data.Binary.Get et Data.Binary.Put mais j'ai fini par utiliser Data.Binary. – uebayasi
@DerekElkins depuis votre commentaire a répondu à la question, vous devriez le fournir comme une réponse ... – sclv