gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 10:51:39 25 4
gpt4 key购买 nike

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

最佳答案

Haskell 不给你任何关于内存布局的保证,所以你不能简单地将一组字节转换为结构 - 你必须使用二进制或类似的东西( Cereal ,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 类型到字节和从字节。

关于haskell - 如何将二进制网络数据包结构映射到 Haskell 标准数据类型(记录)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38698357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com