19

特定のバイナリ形式でデータをシリアライズしたいと考えています。Data.ByteString内部では sを使用しています。

問題は、使用するさまざまなデータ型を に変換する方法ByteStringです。String問題ないので使えencodeLazyByteString UTF8 "string"ます。Integerしかし、 s をByteStrings (ビッグエンディアン)に変換することも必要です。

その方法を知っている人や、Haskell とバイナリ形式を使用する良いヒントを持っている人はいますか?

ありがとう!

4

3 に答える 3

18

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

怠惰なバイト文字列を生成します。これはもちろん厳密なものに変換できます。シリアルパッケージはほとんど同じインターフェイスを提供しますが、厳密なバイト文字列のみを生成します(したがって、エンコーディングの無限のストリーミングはありません)。

于 2010-02-17T20:35:09.360 に答える