0

Haskell の初心者として、私は問題に固執しました: バイト文字列にバイナリ データがあり、それを Word128 のリストに変換したい (バイナリ データが 16 バイト アラインされていると仮定します)。実際、16 バイトのバイト文字列を Word128 に変換することさえ困難です。

誰でも助けることができますか?ありがとう!

4

1 に答える 1

1

通常、選択したバイナリ解析ライブラリのインスタンスを作成します。たとえば、Data.Binaryの場合、次のように記述します。

-- | Read a Word64 in big endian format
getWord64be :: Get Word64
getWord64be = do
    s <- readN 8 id
    return $! (fromIntegral (s `B.index` 0) `shiftl_w64` 56) .|.
              (fromIntegral (s `B.index` 1) `shiftl_w64` 48) .|.
              (fromIntegral (s `B.index` 2) `shiftl_w64` 40) .|.
              (fromIntegral (s `B.index` 3) `shiftl_w64` 32) .|.
              (fromIntegral (s `B.index` 4) `shiftl_w64` 24) .|.
              (fromIntegral (s `B.index` 5) `shiftl_w64` 16) .|.
              (fromIntegral (s `B.index` 6) `shiftl_w64`  8) .|.
              (fromIntegral (s `B.index` 7) )
{- INLINE getWord64be -}

これは、インスタンス Binary に接着されます。

したがって、バイナリ解析ライブラリ (バイナリまたはシリアルのいずれか) を選択し、型のインスタンスを記述します。

于 2012-06-25T19:43:11.077 に答える