1
最小的測試代碼(bs.hs):如何使用Data.Binary和Data.ByteString.Lazy輸出最小二進制文件?
import qualified Data.Binary as B
import qualified Data.ByteString.Lazy.Char8 as BSLC
main = do
BSLC.putStr $ B.encode $ Pad $ BSLC.pack "xxx"
data Pad = Pad BSLC.ByteString
instance B.Binary Pad where
put (Pad p) = do
B.put p
get = do
p <- B.get
return $ Pad p
我也得到:
% runghc bs.hs | od -c
0000000 \0 \0 \0 \0 \0 \0 \0 003 x x x
0000013
% ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.10.2
我期望能獲得 「XXX」。我不知道前8個字節(7 x \ 0 + 1 x 003)是如何來的。
它是ByteString的長度,是一個64位(8字節)的數字。如果你想要輸出一個特定的格式,你不應該使用Binary類。 –
重新閱讀文檔後,有道理。 我開始看Data.Binary.Get和Data.Binary.Put,但以某種方式結束與使用Data.Binary。 – uebayasi
@DerekElkins,因爲你的評論回答了這個問題,你應該提供它作爲答案... – sclv