Haskell を使用してバイナリ形式 (PES) を解析しようとしています。
import qualified Data.ByteString.Lazy as BL
import Data.Word
import Data.Word.Word24
import qualified Data.ByteString.Lazy.Char8 as L8
data Stitch = MyCoord Int Int deriving (Eq, Show)
data PESFile = PESFile {
pecstart :: Word24
, width :: Int
, height :: Int
, numColors :: Int
, header :: String
, stitches :: [Stitch]
} deriving (Eq, Show)
readPES :: BL.ByteString -> Maybe PESFile
readPES bs =
let s = L8.drop 7 bs
pecstart = L8.readInt s in
case pecstart of
Nothing -> Nothing
Just (offset,rest) -> Just (PESFile offset 1 1 1 "#PES" [])
main = do
input <- BL.getContents
print $ readPES input
他のデータ (幅、高さ、ステッチ) のオフセットを取得するために pecstart を読み取る必要があります。ビット版。
別のアプローチを使用する必要がありますか? Data.Binary パッケージは単純な形式に適しているようですが、ファイル内の他のデータのオフセットを見つけるために値を読み取る必要があるため、このようなものでどのように機能するかはわかりません。私が行方不明の何か?