How to convert a Integer to a ByteString in Haskell

前端 未结 3 595
没有蜡笔的小新
没有蜡笔的小新 2020-12-30 04:09

We\'d like to serialize data in a specific binary format. We use Data.ByteStrings internally.

So, the question is: How to convert the different data typ

相关标签:
3条回答
  • 2020-12-30 04:52

    For those, like me, looking for a function to convert an Int or Integer to a ByteString you can use: Data.ByteString.Char8.pack . show Even better if it compiles in your ghc you can use show from TextShow. I understand that this is not quite the OP was asking but people looking for the preceding may end up puzzled at this page due to its title.

    0 讨论(0)
  • 2020-12-30 05:01

    A perfect job for Data.Binary:

    Prelude> :m + Data.Binary
    Prelude Data.Binary> encode (pi :: Double)
    Chunk "\SOH\SOH\NUL\NUL\NUL\NUL\NUL\NUL\NUL\a\CAN-DT\251!\EM\255\255\255\255\255\255\255\205" Empty
    
    Prelude Data.Binary> encode (42 :: Integer)
    Chunk "\NUL\NUL\NUL\NUL*" Empty
    

    to yield lazy bytestrings, which can of course be converted to strict ones. The cereal package provides much the same interface, but yields strict bytestrings only (so no infinite streaming of encodings).

    0 讨论(0)
  • 2020-12-30 05:05

    Have a look at the binary package, or any of its non-lazy variants: cereal or binary-strict .

    In all three cases, since you have a specific binary format, I'd ignore the type class Binary defined in each, and instead focus on the Put and Get monads they define.

    0 讨论(0)
提交回复
热议问题