首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将二进制网络数据包结构映射到Haskell标准数据类型(记录)?

如何将二进制网络数据包结构映射到Haskell标准数据类型(记录)?
EN

Stack Overflow用户
提问于 2016-08-01 20:01:23
回答 1查看 281关注 0票数 3

我想用纯Haskell实现一个二进制协议(RFC3588,Diameter)。我想知道有没有更好的方法(比Data.Binary更好)从/向ByteStrings读取/写入数据。我喜欢将Haskell记录映射到ByteString,就像在C#中通常使用StructLayout属性(装饰器)一样。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-02 07:50:22

Haskell没有给你任何关于内存布局的保证,所以你不能简单地将一组字节转换为结构-你必须使用二进制或类似的东西来解析它(谷类,attoparsec等)。

编辑:有关二进制文件的用法示例,请考虑:

代码语言:javascript
复制
{-# 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类型的字节进行encodedecode操作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38698357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档