ByteString の練習に HEXDUMP してみました。
それぞれに Data.List と同じような関数が定義されています。
import Numeric import qualified Data.ByteString.Lazy as L hexDump :: FilePath -> IO () hexDump path = L.readFile path >>= printHex 16 printHex :: Int -> L.ByteString -> IO () printHex cnt bstring = case L.length bstring > 0 of True -> do putStr $ reverse $ take 3 $ reverse $ "00" ++ showHex (L.head bstring) " " case cnt of 0 -> newLine >> printHex 16 bsTail _ -> printHex (cnt-1) bsTail False -> newLine where bsTail = L.tail bstring newLine = putStr "\n" main = hexDump "./bytestring"
$ ./bytestring|more 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 02 00 03 00 01 00 00 00 40 9e 04 08 34 00 00 00 b4 67 06 00 00 00 00 00 34 00 20 00 09 00 28 00 1f 00 1c 00 06 00 00 00 34 00 00 00 34 80 04 08 34 80 04 08 20 01 00 00 20 01 00 00 05 00 00 00 04 00 00 00 03 00 00 00 54 01 00 00 54 81 04 08 54 81 04 08 13 00 00 00 13 00 00 00 04 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 80 04 08 00 80 04 08 68 0f 06 00 68 0f 06 00 05 00 00 00 00 10 00 00 01 00 00 00 e0 1e 06 00 e0 9e 0a 08 e0 9e 0a 08 84 47 00 00 d4 77 00 00 06 00 00 00 00 10 00 00 02 00 00 00 f8 1e 06 (snip)