我想用纯Haskell实现一个二进制协议(RFC3588,Diameter)。我想知道有没有更好的方法(比Data.Binary更好)从/向ByteStrings读取/写入数据。我喜欢将Haskell记录映射到ByteString,就像在C#中通常使用StructLayout属性(装饰器)一样。
发布于 2016-08-02 07:50:22
Haskell没有给你任何关于内存布局的保证,所以你不能简单地将一组字节转换为结构-你必须使用二进制或类似的东西来解析它(谷类,attoparsec等)。
编辑:有关二进制文件的用法示例,请考虑:
{-# LANGUAGE DeriveGeneric #-}
import Data.Binary
import GHC.Generics (Generic)
data Foo = Foo Int | Bar String deriving (Eq, Ord, Show, Read, Generic)
instance Binary Foo现在,您可以对Foo类型的字节进行encode和decode操作。
https://stackoverflow.com/questions/38698357
复制相似问题